
﻿ Part 2 Chapter 4 WHEN Maheu came in after having left Étienne at Rasseneur 's , he found Catherine , Zacharie , and Jeanlin seated at the table finishing their soup . On returning from the pit they were always so hungry that they ate in their damp clothes , without even cleaning themselves ; and no one was waited for , the table was laid from morning to night ; there was always someone there swallowing his portion , according to the chances of work . As he entered the door Maheu saw the provisions . He said nothing , but his uneasy face lighted up . All the morning the emptiness of the cupboard , the thought of the house without coffee and without butter , had been troubling him ; the recollection came to him painfully while he was hammering at the seam , stifled at the bottom of the cutting . What would his wife do , and what would become of them if she were to return with empty hands ? And now , here was everything ! She would tell him about it later on . He laughed with satisfaction . Catherine and Jeanlin had risen , and were taking their coffee standing ; while Zacharie , not filled with the soup , cut himself a large slice of bread and covered it with butter . Although he saw the brawn on a plate he did not touch it , for meat was for the father , when there was only enough for one . All of them had washed down their soup with a big bumper of fresh water , the good , clear drink of the fortnight 's end . " I have no beer , " said Maheude , when the father had seated himself in his turn . " I wanted to keep a little money . But if you would like some the little one can go and fetch a pint . " He looked at her in astonishment . What ! she had money , too ! " No , no , " he said , " I 've had a glass , it 's all right . " And Maheu began to swallow by slow spoonfuls the mixture of bread , potatoes , leeks , and sorrel piled up in the bowl which served him as a plate . Maheude , without putting Estelle down , helped Alzire to give him all that he required , pushed near him the butter and the meat , and put his coffee on the fire to keep it quite hot . In the meanwhile , beside the fire , they began to wash themselves in the half of a barrel transformed into a tub . Catherine , whose turn came first , had filled it with warm water ; and she undressed herself tranquilly , took off her cap , her jacket , her breeches , and even her chemise , habituated to this since the age of eight , having grown up without seeing any harm in it . She only turned with her stomach to the fire , then rubbed herself vigorously with black soap . No one looked at her , even Lénore and Henri were no longer inquisitive to see how she was made . When she was clean she went up the stairs quite naked , leaving her damp chemise and other garments in a heap on the floor . But a quarrel broke out between the two brothers : Jeanlin had hastened to jump into the tub under the pretence that Zacharie was still eating ; and the latter hustled him , claiming his turn , and calling out that he was polite enough to allow Catherine to wash herself first , but he did not wish to have the rinsings of the young urchins , all the less since , when Jeanlin had been in , it would do to fill the school ink-pots . They ended by washing themselves together , also turning towards the fire , and they even helped each other , rubbing one another 's backs . Then , like their sister , they disappeared up the staircase naked . " What a slop they do make ! " murmured Maheude , taking up their garments from the floor to put them to dry . " Alzire , just sponge up a bit . " But a disturbance on the other side of the wall cut short her speech . One heard a man 's oaths , a woman 's crying , a whole stampede of battle , with hollow blows that sounded like thumps of an empty gourd . " Levaque 's wife is catching it , " Maheu peacefully stated as he scraped the bottom of his bowl with the spoon . " It 's queer ; Bouteloup made out that the soup was ready . " " Ah , yes ! ready , " said Maheude . " I saw the vegetables on the table , not even cleaned . " The cries redoubled , and there was a terrible push which shook the wall , followed by complete silence . Then the miner , swallowing the last spoonful , concluded , with an air of calm justice : " If the soup is not ready , one can understand . " And after having drunk a glassful of water , he attacked the brawn . He cut square pieces , stuck the point of his knife into them and ate them on his bread without a fork . There was no talking when the father was eating . He himself was hungry in silence ; he did not recognize the usual taste of Maigrat 's provisions ; this must come from somewhere else ; however , he put no question to his wife . He only asked if the old man was still sleeping upstairs . No , the grandfather had gone out for his usual walk . And there was silence again . But the odour of the meat made Lénore and Henri lift up their heads from the floor , where they were amusing themselves with making rivulets with the spilt water . Both of them came and planted themselves near their father , the little one in front . Their eyes followed each morsel , full of hope when it set out from the plate and with an air of consternation when it was engulfed in the mouth . At last the father noticed the gluttonous desire which made their faces pale and their lips moist . " Have the children had any of it ? " he asked . And as his wife hesitated : " You know I do n't like injustice . It takes away my appetite when I see them there , begging for bits . " " But they 've had some of it , " she exclaimed , angrily . " If you were to listen to them you might give them your share and the others ' , too ; they would fill themselves till they burst . Is n't it true , Alzire , that we have all had some ? " " Sure enough , mother , " replied the little humpback , who under such circumstances could tell lies with the self-possession of a grown-up person . Lénore and Henri stood motionless , shocked and rebellious at such lying , when they themselves were whipped if they did not tell the truth . Their little hearts began to swell , and they longed to protest , and to say that they , at all events , were not there when the others had some . " Get along with you , " said the mother , driving them to the other end of the room . " You ought to be ashamed of being always in your father 's plate ; and even if he was the only one to have any , does n't he work , while all you , a lot of good-for-nothings , ca n't do anything but spend ! Yes , and the more the bigger you are . " Maheu called them back . He seated Lénore on his left thigh , Henri on the right ; then he finished the brawn by playing at dinner with them . He cut small pieces , and each had his share . The children devoured with delight . When he had finished , he said to his wife : " No , do n't give me my coffee . I 'm going to wash first ; and just give me a hand to throw away this dirty water . " They took hold of the handles of the tub and emptied it into the gutter before the door , when Jeanlin came down in dry garments , breeches and a woollen blouse , too large for him , which were weary of fading on his brother 's back . Seeing him slinking out through the open door , his mother stopped him . " Where are you off to ? " " Over there . " " Over where ? Listen to me . You go and gather a dandelion salad for this evening . Eh , do you hear ? If you do n't bring a salad back you 'll have to deal with me . " " All right ! " Jeanlin set out with hands in his pockets , trailing his sabots and slouching along , with his slender loins of a ten-year-old urchin , like an old miner . In his turn , Zacharie came down , more carefully dressed , his body covered by a black woollen knitted jacket with blue stripes . His father called out to him not to return late ; and he left , nodding his head with his pipe between his teeth , without replying . Again the tub was filled with warm water . Maheu was already slowly taking off his jacket . At a look , Alzire led Lénore and Henri outside to play . The father did not like washing en famille , as was practised in many houses in the settlement . He blamed no one , however ; he simply said that it was good for the children to dabble together . " What are you doing up there ? " cried Maheude , up the staircase . " I 'm mending my dress that I tore yesterday , " replied Catherine . " All right . Do n't come down , your father is washing . " Then Maheu and Maheude were left alone . The latter decided to place Estelle on a chair , and by a miracle , finding herself near the fire the child did not scream , but turned towards her parents the vague eyes of a little creature without intelligence . He was crouching before the tub quite naked , having first plunged his head into it , well rubbed with that black soap the constant use of which discoloured and made yellow the hair of the race . Afterwards he got into the water , lathered his chest , belly , arms , and thighs , scraping them energetically with both fists . His wife , standing by , watched him . " Well , then , " she began , " I saw your eyes when you came in . You were bothered , eh ? and it eased you , those provisions . Fancy ! those Piolaine people did n't give me a sou ! Oh ! they are kind enough ; they have dressed the little ones and I was ashamed to ask them , for it crosses me to ask for things . " She interrupted herself a moment to wedge Estelle into the chair lest she should tip over . The father continued to work away at his skin , without hastening by a question this story which interested him , patiently waiting for light . " I must tell you that Maigrat had refused me , oh ! straight ! like one kicks a dog out of doors . Guess if I was on a spree ! They keep you warm , woollen garments , but they do n't put anything into your stomach , eh ! " He lifted his head , still silent . Nothing at Piolaine , nothing at Maigrat 's : then where ? But , as usual , she was pulling up her sleeves to wash his back and those parts which he could not himself easily reach . Besides , he liked her to soap him , to rub him everywhere till she almost broke her wrists . She took soap and worked away at his shoulders while he held himself stiff so as to resist the shock . " Then I returned to Maigrat 's , and said to him , ah , I said something to him ! And that it did n't do to have no heart , and that evil would happen to him if there were any justice . That bothered him ; he turned his eyes and would like to have got away . " From the back she had got down to the buttocks and was pushing into the folds , not leaving any part of the body without passing over it , making him shine like her three saucepans on Saturdays after a big clean . Only she began to sweat with this tremendous exertion of her arms , so exhausted and out of breath that her words were choked . " At last he called me an old nuisance . We shall have bread until Saturday , and the best is that he has lent me five francs . I have got butter , coffee , and chicory from him . I was even going to get the meat and potatoes there , only I saw that he was grumbling . Seven sous for the chitterlings , eighteen for the potatoes , and I 've got three francs seventy-five left for a ragout and a meat soup . Eh , I do n't think I 've wasted my morning ! " Now she began to wipe him , plugging with a towel the parts that would not dry . Feeling happy and without thinking of the future debt , he burst out laughing and took her in his arms . " Leave me alone , stupid ! You are damp , and wetting me . Only I 'm afraid Maigrat has ideas---- " She was about to speak of Catherine , but she stopped . What was the good of disturbing him ? It would only lead to endless discussion . " What ideas ? " he asked . " Why , ideas of robbing us . Catherine will have to examine the bill carefully . " He took her in his arms again , and this time did not let her go . The bath always finished in this way : she enlivened him by the hard rubbing , and then by the towels which tickled the hairs of his arms and chest . Besides , among all his mates of the settlement it was the hour for stupidities , when more children were planted than were wanted . At night all the family were about . He pushed her towards the table , jesting like a worthy man who was enjoying the only good moment of the day , calling that taking his dessert , and a dessert which cost him nothing . She , with her loose figure and breast , struggled a little for fun . " You are stupid ! My Lord ! you are stupid ! And there 's Estelle looking at us . Wait till I turn her head . " " Oh , bosh ! at three months ; as if she understood ! " When he got up Maheu simply put on a dry pair of breeches . He liked , when he was clean and had taken his pleasure with his wife , to remain naked for a while . On his white skin , the whiteness of an anaemic girl , the scratches and gashes of the coal left tattoo-marks , grafts as the miners called them ; and he was proud of them , and exhibited his big arms and broad chest shining like veined marble . In summer all the miners could be seen in this condition at their doors . He even went there for a moment now , in spite of the wet weather , and shouted out a rough joke to a comrade , whose breast was also naked , on the other side of the gardens . Others also appeared . And the children , trailing along the pathways , raised their heads and also laughed with delight at all this weary flesh of workers displayed in the open air . While drinking his coffee , without yet putting on a shirt , Maheu told his wife about the engineer 's anger over the planking . He was calm and unbent , and listened with a nod of approval to the sensible advice of Maheude , who showed much common sense in such affairs . She always repeated to him that nothing was gained by struggling against the Company . She afterwards told him about Madame Hennebeau 's visit . Without saying so , both of them were proud of this . " Can I come down yet ? " asked Catherine , from the top of the staircase . " Yes , yes ; your father is drying himself . " The young girl had put on her Sunday dress , an old frock of rough blue poplin , already faded and worn in the folds . She had on a very simple bonnet of black tulle . " Hallo ! you 're dressed . Where are you going to ? " " I 'm going to Montsou to buy a ribbon for my bonnet . I 've taken off the old one ; it was too dirty . " " Have you got money , then ? " " No ! but Mouquette promised to lend me half a franc . " The mother let her go . But at the door she called her back . " Here ! do n't go and buy that ribbon at Maigrat 's . He will rob you , and he will think that we are rolling in wealth . " The father , who was crouching down before the fire to dry his neck and shoulders more quickly , contented himself with adding : " Try not to dawdle about at night on the road . " In the afternoon , Maheu worked in his garden . Already he had sown there potatoes , beans , and peas ; and he now set about replanting cabbage and lettuce plants , which he had kept fresh from the night before . This bit of garden furnished them with vegetables , except potatoes of which they never had enough . He understood gardening very well , and could even grow artichokes , which was treated as sheer display by the neighbours . As he was preparing the bed , Levaque just then came out to smoke a pipe in his own square , looking at the cos lettuces which Bouteloup had planted in the morning ; for without the lodger 's energy in digging nothing would have grown there but nettles . And a conversation arose over the trellis . Levaque , refreshed and excited by thrashing his wife , vainly tried to take Maheu off to Rasseneur 's . Why , was he afraid of a glass ? They could have a game at skittles , lounge about for a while with the mates , and then come back to dinner . That was the way of life after leaving the pit . No doubt there was no harm in that , but Maheu was obstinate ; if he did not replant his lettuces they would be faded by to-morrow . In reality he refused out of good sense , not wishing to ask a farthing from his wife out of the change of the five-franc piece . Five o'clock was striking when Pierrone came to know if it was with Jeanlin that her Lydie had gone off . Levaque replied that it must be something of that sort , for Bébert had also disappeared , and those rascals always went prowling about together . When Maheu had quieted them by speaking of the dandelion salad , he and his comrade set about joking the young woman with the coarseness of good-natured devils . She was angry , but did not go away , in reality tickled by the strong words which made her scream with her hands to her sides . A lean woman came to her aid , stammering with anger like a clucking hen . Others in the distance on their doorsteps confided their alarms . Now the school was closed ; and all the children were running about , there was a swarm of little creatures shouting and tumbling and fighting ; while those fathers who were not at the public-house were resting in groups of three or four , crouching on their heels as they did in the mine , smoking their pipes with an occasional word in the shelter of a wall . Pierronne went off in a fury when Levaque wanted to feel if her thighs were firm ; and he himself decided to go alone to Rasseneur 's , since Maheu was still planting . Twilight suddenly came on ; Maheude lit the lamp , irritated because neither her daughter nor the boys had come back . She could have guessed as much ; they never succeeded in taking together the only meal of the day at which it was possible for them to be all round the table . Then she was waiting for the dandelion salad . What could he be gathering at this hour , in this blackness of an oven , that nuisance of a child ! A salad would go so well with the stew which was simmering on the fire--potatoes , leeks , sorrel , fricasseed with fried onion . The whole house smelt of that fried onion , that good odour which gets rank so soon , and which penetrates the bricks of the settlements with such infection that one perceives it far off in the country , the violent flavour of the poor man 's kitchen . Maheu , when he left the garden at nightfall , at once fell into a chair with his head against the wall . As soon as he sat down in the evening he went to sleep . The clock struck seven ; Henri and Lénore had just broken a plate in persisting in helping Alzire , who was laying the table , when Father Bonnemort came in first , in a hurry to dine and go back to the pit . Then Maheude woke up Maheu . " Come and eat ! So much the worse ! They are big enough to find the house . The nuisance is the salad ! " 