
' The sooner we dispatch the snobbery that " West is best , " the better . ' You must have had your head buried in a mountain of Big Macs this year not to know that obesity is killing us . Accusations are piling up alongside our collective fat mountain . Politicians , schools , hospitals and food manufacturers are to blame . And those of us not of broom handle stature are lazy , uneducated or just plain greedy . Such irresponsibility is threatening the very heart of our nation . The war on fat is upon us , as are weapons of mass hysteria . Diet this , fit club that . But is anybody actually tackling the real issues ? Why do we have such a problem with food ? What is a healthy body image ? How come we are overeating when millions die from food shortages ? Well the good news is , there are actually a fair number of books to help us savour all issues regarding food . Here are five to give you some fibre to chew on . Fat is a Feminist Issue Susie Orbach , Arrow £ 7.99 Rightly , Orbach 's classic has been selling for over 25 years . It blows from the table the myth that if only we remembered the millions starving in Africa we would n't over indulge . Rather , she suggests that parents chastising children for leftovers on their plate and reminding them of starving children , are the problem . Accordingly our society has become obsessed with engulfing all in our way and incapable of telling when our bodies are full . Not convinced ? Try her exercise of leaving a mouthful of food on your plate and throwing it away - not for the faint stomached ! Add to that , psychological pressures leading to " comfort eating " and it 's no wonder we are in a mess . The expectations on women especially , to smile passively , lead us to swallowing our anger and depression . Again there are numerous exercises to help us take control of our bodies and minds . A far more useful book than those proscribing foods , which often lead to cravings followed by guilty bingeing . What Would Jesus Eat ? Dr Don Colbert , STL £ 16.99 WWJD bracelets are out . What you really need is a WWJE fridge magnet . Well you do if you go along with Dr Don Colbert anyway . If you want a decent book on the whys and wherefores of healthy food then this is as good as any . There is nothing too groundbreaking however with the mantra of wholegrains - good , French Fries - bad , forming the general advice . The Christian physician also takes a welcome look at the need for free range cattle and kosher meats rather than intensive farming . But , and with such a title there has to be a but , to justify good eating Colbert relies on the often spurious use of bible verses . For example , Jesus referring to God being like a mother hen , points to the fact that he ate chicken - apparently . What is in essence a useful book , becomes a sad reflection of the fact that some Christians will only follow common sense if preceded by " Jesus said . . . " PS . If you are really keen there is an accompanying cookbook . Fat Land Greg Critser , Penguin £ 6.99 Critser like so many of us , was overweight . It was only when he nearly caused an accident and was called " fatso " he decided to do something about it . This decision led to a journey into the world of fat reduction and a discovery of some of the real causes behind America 's obesity problem . Critser was quick to realise that obesity is intricately linked to class and wealth . The book is full of frightening figures showing how poor communities are more likely to suffer obesity related health problems than the rich . The availability of decent education that is not sponsored by Pizza Hut , MacDonalds or other such health aficionados is limited . As is good proactive , preventative healthcare . These are not exactly revolutionary claims but Crister 's exploration of how " bad foods " such as sugar and fats are subsidised more than healthy foods is illuminating . Do n't be put off by the American slant as much of the book has relevance in the UK too ; not least because we are fast following in their footsteps , both culturally and in body shape . We are provided with a well researched , readable book that exposes some of the real causes of Western obesity . It is not just individual greed and lack lustre will power that is to blame . So We Shall Reap Colin Tudge , Penguin £ 8.99 Highly critical of the short termism and lack of diversity in our food production , Tudge argues that instead of starvation being a reality for the majority world , all people should be able to eat for time immemorial . That is , if we change our attitudes . Tudge , a zoologist and a Research Fellow at the Centre of Philosophy at LSE does not eschew science . He is not an organic fetishist with simplistic answers , but he does rigorously examine the need for more regional farming and learning from traditional methods . The sooner we dispatch the snobbery that " West is best , " the better . Alongside his historical account of humanity 's ability to farm , he writes that we are spiritual beings and therefore have a need to look after the land and wildlife around us . Our status as intelligent beings also brings with it the compunction to design sustainable farming methods that will provide food for tens of thousands of years . Sadly he does not examine fully these claims . I passionately believe he is right , but on a daily basis , humanity refuses to live its responsibility . Let 's just hope that some people may start to act on this important book . The Apologist Jay Rayner , Atlantic Books £ 10 After discovering one of his columns has led to the suicide of a restaurateur , food critic Marc , decides to apologise . This leads to an all-consuming desire to apologise to everybody he has sinned against - ever . The UN are quick to pick up on his passion and make him Chief Apologist and task him with leading countries to apologise to each other for historical hurts . A new life starts for this man who has struggled with the meaning of a healthy body image since childhood . As weight is lost , Marc discovers that gluttony and greed affect far more than a person 's feeding cycle . Is love of good food a crime ? Do we assume that only rich people have sophisticated taste buds ? How do we learn to love one another and ourselves ? All these questions and more are tackled with dark humour interspersed with descriptions of food , which are almost erotic in detail . Forget diets , forget health gurus , Jay Rayner has the answer to our obesity ; we are broken human beings . We might sort out one problem but are just too good at simply causing another . A superb morality tale for all those who think greed is simple issue . 