Am getting duplicate data from get_posts()

Without looking at the database data (posts, inherits, etc), it’s a bit of guesswork.

Try the following:

  • Make sure you have "post_type"=>"post" specified, so that you don’t get auto-saved inherits (if it defaults to ‘any’).
  • If this is an isolated query (not meant to be main loop), use $q = new WP_Query() and run it through that instead of get_posts().
  • What does setup_postdata do? Does it accidentally rewind anything?
  • Try escaping the category loop and apply get_category_by_slug('latest') to “category” (it returns an object with ID) to the call.