We have a "you eat what's fixed" rule in our house that doesn't always work either, but it helps to show our kids that WE'RE the boss, not them, and I've learned how to alter that rule to better apply to our family.
My oldest son is not overly fond of red meat- he never has been. But we've recently discovered that he loves salsibury steak, instead of bursting his "I won't eat red meat" bubble, I try to include it in our dinner menu at least once a week. The one thing that I refuse to do is to fix 2 seperate meals, that was just giving him power to be picky, and if he had his way, we'd have nothing but chicken nuggets, french fries and mac-n-cheese every night.
What I will do though, when I can, is to alter whatever I'm fixing so he will eat it. For example, if I fix spaghetti for dinner, I will hold some extra sauce to the side and not put any meat in it, if we have broccoli, I make sure that his is steamed with cheese, while I make sure his younger brother's is raw. What I will not do is to fix him a peanut butter sandwhich while the rest of us have hamburgers or make him chicken nuggets if we're having lasagna. I don't mind "altering" what I'm fixing to suit his taste, but I refuse to fix something totally different from the rest of us.
He is more than old enough to not be throwing tantrums at the table any more. As cruel as it sounds, if he doesn't eat what you fix for him, let him go hungry, it's his choice. And when he comes to you later, offer to warm up whatever it is that you fixed for dinner. Praise every time him for trying new things without a fight, and occasionally reward him for actually eating without a fuss. (Don't reward him EVERY time, or you'll have a whole new battle on your hands.)