Please create a colorful handbook pdf with vocabulary words from attached file with it's meaning in English and under that in Russian language. Also do add 3 example sentences of daily life use, using each vocabulary words.Please don't select primitive words like run , cover ,climb etc , only choose vocabulary words from B2 - C1 proficiency only for writing it's meaning. Later on do create list of 15 conversation questions as per C1 proficiency from the article text given in attached file.Mention their answers at last in answer key at last page of handbook. Later on write individual answers for individual exercises from the file attached like a teacher's book with all answers from all exercises as per C1 proficiency.

Reading File
Browsing Directory

~/

Browsing Directory

~/attachments/08f69fe6-b96f-4a8d-958a-a3307f2c18d4

Reading File
Running Command

mkdir -p "/tmp/workspace/c1-handbook/src" "/tmp/workspace/c1-handbook/output" && python -c "import pdfplumber; p='/tmp/workspace/attachments/08f69fe6-b96f-4a8d-958a-a3307f2c18d4/DOC-20261004-WA0001.pdf'; pdf=pdfplumber.open(p); print('PAGES',len(pdf.pages)); [print('\\n--- PAGE %d ---\\n%s' % (i+1,(page.extract_text() or '')[:10000])) for i,page in enumerate(pdf.pages)]"

Writing File

~/c1-handbook/src/create_handbook.py

from reportlab.lib import colors
from reportlab.lib.colors import HexColor
from reportlab.lib.enums import TA_CENTER, TA_LEFT
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, PageBreak, Table, TableStyle, KeepTogether)
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.lib import utils
import os

OUT = '/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Handbook.pdf'
FONT = '/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
FONT_B = '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf'
pdfmetrics.registerFont(TTFont('DejaVu', FONT))
pdfmetrics.registerFont(TTFont('DejaVu-Bold', FONT_B))

NAVY=HexColor('#182C4C'); BLUE=HexColor('#247BA0'); TEAL=HexColor('#2A9D8F'); CORAL=HexColor('#E76F51'); GOLD=HexColor('#E9C46A'); PALE=HexColor('#F4F8FB'); LILAC=HexColor('#EEE8F8'); INK=HexColor('#233244'); GREY=HexColor('#607080')

styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='CoverKicker', fontName='DejaVu-Bold', fontSize=11, leading=14, textColor=GOLD, alignment=TA_CENTER, spaceAfter=13))
styles.add(ParagraphStyle(name='CoverTitle', fontName='DejaVu-Bold', fontSize=31, leading=37, textColor=colors.white, alignment=TA_CENTER, spaceAfter=12))
styles.add(ParagraphStyle(name='CoverSub', fontName='DejaVu', fontSize=13, leading=19, textColor=HexColor('#DDEAF4'), alignment=TA_CENTER))
styles.add(ParagraphStyle(name='H1x', fontName='DejaVu-Bold', fontSize=19, leading=24, textColor=NAVY, spaceBefore=2, spaceAfter=10))
styles.add(ParagraphStyle(name='H2x', fontName='DejaVu-Bold', fontSize=12.5, leading=16, textColor=BLUE, spaceBefore=8, spaceAfter=5))
styles.add(ParagraphStyle(name='Bodyx', fontName='DejaVu', fontSize=9.3, leading=13.2, textColor=INK, spaceAfter=6))
styles.add(ParagraphStyle(name='Smallx', fontName='DejaVu', fontSize=8.0, leading=10.5, textColor=INK, spaceAfter=3))
styles.add(ParagraphStyle(name='Tinyx', fontName='DejaVu', fontSize=6.7, leading=8.2, textColor=INK, spaceAfter=1.5))
styles.add(ParagraphStyle(name='VocabWord', fontName='DejaVu-Bold', fontSize=12.3, leading=15, textColor=NAVY, spaceAfter=3))
styles.add(ParagraphStyle(name='Definition', fontName='DejaVu', fontSize=8.4, leading=11.3, textColor=INK, spaceAfter=2))
styles.add(ParagraphStyle(name='Russian', fontName='DejaVu', fontSize=8.4, leading=11.3, textColor=HexColor('#6A3D8F'), spaceAfter=4))
styles.add(ParagraphStyle(name='Example', fontName='DejaVu', fontSize=8.0, leading=10.5, textColor=INK, leftIndent=8, bulletIndent=0, spaceAfter=1))
styles.add(ParagraphStyle(name='Question', fontName='DejaVu', fontSize=9, leading=12.3, textColor=INK, leftIndent=0, spaceAfter=6))

vocab = [
('globalized', 'connected internationally through trade, travel, communication, and shared culture.', 'глобализированный; связанный с мировыми процессами.', ['A globalized workplace often brings together colleagues from several countries.', 'Our local café serves food that reflects a globalized taste in cities today.', 'Living abroad made her more aware of how globalized everyday life has become.']),
('take for granted', 'to fail to appreciate something because you expect it to be available or normal.', 'воспринимать как должное.', ['I used to take reliable hot water for granted until the boiler broke.', 'Do not take your neighbours’ kindness for granted.', 'He took public transport for granted until the strike started.']),
('universal', 'shared by all people or found in all places.', 'универсальный; общий для всех.', ['The need to feel safe at home is almost universal.', 'A smile is not a universal sign of agreement in every context.', 'They questioned the assumption that one design was universally suitable.']),
('absence', 'the state of not being present or not existing.', 'отсутствие.', ['The absence of a lift made the flat difficult for her grandparents.', 'His absence from the meeting was immediately noticed.', 'The article shows that the absence of an object can be surprising.']),
('extraordinary', 'very unusual, remarkable, or far beyond what is ordinary.', 'необыкновенный; выдающийся.', ['It felt extraordinary to eat dinner in the middle of a shop.', 'She has an extraordinary ability to remember faces.', 'The view from the roof was extraordinary after the storm.']),
('adopt', 'to begin to use an idea, habit, method, or object as your own.', 'перенимать; принимать.', ['Many families have adopted video calls to stay close to relatives.', 'He gradually adopted the local habit of taking off shoes indoors.', 'The company adopted a more flexible working schedule.']),
('domestic residence', 'a home used for private family life rather than for business or public activity.', 'частное жильё; домашнее пространство.', ['At night, the shop became a domestic residence for the family.', 'The building combines a café with a domestic residence upstairs.', 'Visitors should respect the privacy of a domestic residence.']),
('bonding experience', 'an activity or event that helps people form a closer relationship.', 'опыт, который сближает людей.', ['Cooking together can be a bonding experience for new flatmates.', 'The long train journey became a bonding experience for the team.', 'Sharing tea with a host is often a meaningful bonding experience.']),
('draughty', 'allowing cold air to enter through gaps or openings.', 'продуваемый; со сквозняками.', ['The old hallway is draughty, so we keep a blanket near the door.', 'Their draughty windows need to be repaired before winter.', 'A draughty room can make even a warm house uncomfortable.']),
('fitted', 'made or installed to match a particular space exactly.', 'встроенный; подогнанный по размеру.', ['The flat has fitted cupboards in the kitchen.', 'She chose fitted shelves to use the narrow wall efficiently.', 'Fitted carpets can make a room feel warmer, though they are harder to clean.']),
('scalding', 'extremely hot and likely to burn skin.', 'обжигающе горячий.', ['Be careful: the tap water is scalding this morning.', 'He pulled his hand back from the scalding cup of tea.', 'The shower became scalding when someone used water in the kitchen.']),
('evenly distributed', 'spread so that each area receives a similar amount.', 'равномерно распределённый.', ['The heat is evenly distributed when the pan is placed in the centre.', 'Make sure the ingredients are evenly distributed through the mixture.', 'The blinds help keep light evenly distributed across the room.']),
('cosy', 'warm, comfortable, and pleasantly protected from the weather or outside world.', 'уютный; тёплый и комфортный.', ['The small reading corner feels cosy on rainy evenings.', 'They made the bare room cosy with lamps and cushions.', 'We stayed indoors because the restaurant was so cosy.']),
('humid', 'containing a lot of water vapour in the air.', 'влажный; с высокой влажностью.', ['It is too humid to dry clothes outside today.', 'The humid weather made the walk home exhausting.', 'A humid bathroom needs good ventilation to prevent mould.']),
('utility area', 'a small room or section of a home used for washing, storage, or household work.', 'подсобное помещение; хозяйственная зона.', ['The washing machine is kept in a utility area beside the kitchen.', 'We store cleaning products safely in the utility area.', 'The new utility area has enough space to sort laundry.']),
('staple', 'a basic or common product that is regularly used or eaten.', 'основной продукт; неотъемлемая часть.', ['Rice is a staple in many households.', 'A pressure cooker is a kitchen staple for her family.', 'Clear communication should be a staple of every workplace.']),
]

questions = [
'1. To what extent does the article challenge the assumption that household objects are culturally neutral?',
'2. How does Adam’s account complicate the boundary between commercial activity and domestic life?',
'3. Why might a shared tea ritual function as more than a social nicety in the Vietnamese context described?',
'4. What does Jim’s experience with a basement flat reveal about culturally conditioned ideas of normality?',
'5. Assess whether the brasero is merely a heating device or a social object. Justify your view.',
'6. How does In-ha use contrast to communicate her frustration with separate taps?',
'7. What can fitted carpets in bathrooms suggest about the relationship between habit, comfort, and practicality?',
'8. Why is Kasia’s missing bathtub presented as a loss rather than simply an architectural difference?',
'9. In what ways do climate and routine appear to shape household design in Belo Horizonte?',
'10. How does the author’s opening anecdote about the fork support the wider argument of the article?',
'11. Is globalisation likely to erase domestic cultural differences, or make them more visible? Explain.',
'12. Which object in the text best illustrates how a household item can create community, and why?',
'13. How might visitors avoid interpreting unfamiliar domestic practices as inferior or irrational?',
'14. Compare the types of discomfort experienced by In-ha and Kasia. Which is more practical and which is more emotional?',
'15. What additional household object from your own culture could be added to the article, and what would it reveal?'
]
answers = [
'1. It shows that “ordinary” objects reflect local climate, routines and values; neutrality is often an outsider’s assumption.',
'2. A home may shift between shop and family space, so the public-private division is less fixed than in many Western settings.',
'3. The small tea set and shared drinking ritual create hospitality, conversation and interpersonal trust.',
'4. A basement may be normal housing in Belfast but storage space in Spain, proving that normality is culturally learned.',
'5. It is social as well as practical: it concentrates warmth around a table and encourages people to sit together.',
'6. She contrasts the inconvenience of two extreme temperatures with the control offered by a mixer tap, then uses emphatic language.',
'7. It may privilege warmth and familiarity over easy cleaning, showing that practical choices are culturally negotiated.',
'8. It represents a familiar form of relaxation and privacy that she associates with home, so its absence feels personal.',
'9. Heat and humidity favour frequent showers, washable spaces and a sink for soaking and scrubbing clothes.',
'10. It demonstrates that objects once dismissed as bizarre may later become ordinary, so cultural judgments can change.',
'11. Model answer: globalisation spreads products, yet local use, meanings and layouts can preserve or even highlight difference.',
'12. The tea set: it structures a shared ritual and makes conversation between hosts and guests more intimate.',
'13. They should ask respectful questions, consider climate and history, and recognise that their own habits are also culturally specific.',
'14. In-ha’s discomfort is mainly practical, involving water temperature and washing; Kasia’s is more emotional because she misses bathing.',
'15. Answers vary. A strong answer names an object, explains its customary use, and connects it to a cultural value or daily routine.'
]

teacher = [
('<b>Exercise 1 - Speaking</b>', 'Answers vary. Encourage learners to justify claims with examples from their own homes, local housing patterns and experiences abroad. Useful C1 language: <i>culturally conditioned, take for granted, domestic norms, reflect identity</i>.'),
('<b>Exercise 2 - Household objects and actions</b>', 'Possible matches: <b>climb</b> a ladder/stairs; <b>cover</b> a table with a cloth or cover a bowl; <b>fill</b> a bucket/bowl; <b>flush</b> a toilet; <b>heat</b> food in a pan or warm a room with a heater; <b>lay</b> the table; <b>load</b> a washing machine; <b>run</b> a tap; <b>spread</b> washing-up liquid or a cloth; <b>thread</b> a needle; <b>unblock</b> a sink/toilet; <b>wring out</b> a cloth/mop.'),
('<b>Exercise 3 - Problems and solutions</b>', 'The five problems are: <b>spill water, flood the kitchen, rip your trousers, drop a glass, stain your top</b>. The five possible solutions are: <b>sweep the floor, soak your jeans, rinse a glass, mend your shirt, wipe the table</b>. Logical pairings: spilled water -> wipe the table/floor; flooded kitchen -> identify and unblock the drain, then mop; ripped trousers -> mend them; dropped glass -> sweep up the pieces; stained top -> rinse and/or soak it. “Soak your jeans” can also be part of stain removal.'),
('<b>Exercise 4 - Distinguishing objects</b>', '1 rope is thicker and stronger; string is thinner. 2 wire is a single metal strand; cable is a thicker group of wires, often insulated. 3 cloth is fabric; a sponge is absorbent porous material. 4 a bucket is deeper with a handle; a bowl is open and usually smaller. 5 a drill makes holes; a hammer drives or removes nails. 6 a mop cleans floors; a brush has bristles for scrubbing/sweeping. 7 a nail is hammered in; a screw is twisted in. 8 a ladder is portable; stairs are a fixed structure. 9 a plaster covers a small cut; a bandage supports or covers a larger injury. 10 soap is for washing the body; washing-up liquid is for dishes.'),
('<b>Exercise 5 - Vocabulary game</b>', 'No single answer. Assess whether the learner can explain, mime or draw accurately without using the target word, and whether the partner identifies it.'),
('<b>Exercise 6 - Main point</b>', 'Answer: <b>3</b>. The introduction argues that ideas of what is “normal” differ across countries and may change over time.'),
('<b>Exercise 7 - Discussion</b>', 'Answers vary. Strong responses should refer to a specific object/practice and explain why it is normally invisible, confusing or adopted from another culture.'),
('<b>Exercise 8 - Article discussion</b>', 'Possible points: tiled rooms and tea sets may be familiar in Vietnam; a brasero may be attractive for warmth and sociability; separate taps may seem most impractical; the Vietnamese mixed-use home shows a different public-private boundary; Brazilian washing arrangements reflect heat, humidity and laundry routines.'),
('<b>Exercise 9 - Matching</b>', '1 Jim; 2 Adam; 3 Kasia; 4 In-ha; 5 Jim; 6 Adam; 7 Kasia; 8 In-ha. By person: Adam = 2 and 6; Jim = 1 and 5; In-ha = 4 and 8; Kasia = 3 and 7.'),
('<b>Exercise 10 - Personal reflection</b>', 'Answers vary. Require three named objects for Question 2 and a reasoned explanation for Questions 1 and 3. C1 responses should compare cultural associations rather than make unsupported generalisations.'),
('<b>Exercise 11 - Group decision</b>', 'Answers vary. Accept a negotiated list of three items only when learners give criteria, such as health, safety, hygiene, communication or the ability to prepare food. Ask groups to explain trade-offs and reach consensus.')
]

def P(t, style='Bodyx'): return Paragraph(t, styles[style])
def header_footer(canvas, doc):
    page=canvas.getPageNumber()
    if page == 1: return
    canvas.saveState(); canvas.setStrokeColor(HexColor('#DCE7EF')); canvas.line(1.55*cm, 1.25*cm, A4[0]-1.55*cm, 1.25*cm)
    canvas.setFont('DejaVu', 7.5); canvas.setFillColor(GREY); canvas.drawString(1.55*cm, .82*cm, 'Foreign Objects | C1 Vocabulary & Teacher Handbook')
    canvas.drawRightString(A4[0]-1.55*cm, .82*cm, f'{page}')
    canvas.restoreState()

def section_title(title, subtitle=None):
    flow=[P(title,'H1x')]
    if subtitle: flow.append(P(subtitle,'Bodyx'))
    return flow

doc=SimpleDocTemplate(OUT, pagesize=A4, rightMargin=1.55*cm, leftMargin=1.55*cm, topMargin=1.55*cm, bottomMargin=1.65*cm)
story=[]
# Cover
story += [Spacer(1, 3.15*cm), P('CULTURE & IDENTITY | UNIT 3','CoverKicker'), P('Foreign Objects','CoverTitle'), P('C1 Vocabulary, Conversation and Teacher Handbook','CoverSub'), Spacer(1, .6*cm)]
coverbox=Table([[P('<b>WHAT IS INSIDE</b><br/>16 B2-C1 lexical items with Russian translations and daily-life examples<br/>15 C1 conversation questions based on the article<br/>Complete teacher’s answer guide for Exercises 1-11<br/>Final-page discussion answer key','Bodyx')]], colWidths=[14.1*cm])
coverbox.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),HexColor('#FFFFFF')),('BOX',(0,0),(-1,-1),1,HexColor('#FFFFFF')),('LEFTPADDING',(0,0),(-1,-1),15),('RIGHTPADDING',(0,0),(-1,-1),15),('TOPPADDING',(0,0),(-1,-1),13),('BOTTOMPADDING',(0,0),(-1,-1),13)]))
story += [coverbox, Spacer(1,.7*cm), P('Built from the supplied reading: “Foreign Objects”. Definitions focus on advanced B2-C1 use rather than basic household verbs.','CoverSub'), PageBreak()]
# Vocabulary
story += section_title('Advanced Vocabulary Bank','All items occur in or are directly derived from the supplied article. Read the English definition, then the Russian equivalent, then practise the three examples.')
for idx,(word,eng,ru,examples) in enumerate(vocab,1):
    card=[P(f'{idx:02d}. {word}','VocabWord'), P(f'<b>English:</b> {eng}','Definition'), P(f'<b>Русский:</b> {ru}','Russian')]
    for ex in examples: card.append(P(ex,'Example'))
    t=Table([[card]], colWidths=[17.85*cm])
    bg = PALE if idx%2 else LILAC
    t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),bg),('BOX',(0,0),(-1,-1),.45,HexColor('#D8E4ED')),('LEFTPADDING',(0,0),(-1,-1),10),('RIGHTPADDING',(0,0),(-1,-1),10),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]))
    story += [KeepTogether([t, Spacer(1,5)])]
story.append(PageBreak())
# Questions
story += section_title('C1 Conversation Questions','Discuss with precision. Refer to details from the text and qualify your opinions with evidence or examples.')
for q in questions: story.append(P(q,'Question'))
story += [Spacer(1,5), P('<b>Speaking challenge:</b> In pairs, select any three questions. For each answer, use at least one advanced item from the vocabulary bank and one contrastive linker: <i>whereas, nevertheless, by contrast, consequently</i>.','Bodyx'), PageBreak()]
# Teacher book
story += section_title('Teacher’s Book: Exercise Answers','Model answers and marking guidance for every exercise on the supplied pages.')
for heading, txt in teacher:
    story += [P(heading,'H2x'), P(txt,'Bodyx')]
story.append(PageBreak())
# Answer key last page compact
story += [P('Answer Key: C1 Conversation Questions','H1x'), P('These are model answers. Learners may express alternative views when they are textually grounded, nuanced and clearly explained.','Smallx')]
cols=[]
for i,(q,a) in enumerate(zip(questions,answers),1):
    shortq=q.split('. ',1)[1]
    cols.append(P(f'<b>{i}. {shortq}</b><br/>{a}','Tinyx'))
left=cols[:8]; right=cols[8:]
# pad table rows
rows=[]
for i in range(8): rows.append([left[i] if i<len(left) else '', right[i] if i<len(right) else ''])
t=Table(rows,colWidths=[8.75*cm,8.75*cm], hAlign='LEFT')
t.setStyle(TableStyle([('VALIGN',(0,0),(-1,-1),'TOP'),('BACKGROUND',(0,0),(0,-1),PALE),('BACKGROUND',(1,0),(1,-1),LILAC),('BOX',(0,0),(-1,-1),.5,HexColor('#D8E4ED')),('INNERGRID',(0,0),(-1,-1),.35,HexColor('#D8E4ED')),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),5),('BOTTOMPADDING',(0,0),(-1,-1),5)]))
story += [t, Spacer(1,8), P('<b>Teacher note:</b> For Questions 11 and 15, reward a defensible position and specific supporting rationale rather than a single “correct” conclusion.','Smallx')]

doc.build(story, onFirstPage=header_footer, onLaterPages=header_footer)
print(OUT)
Editing File

~/c1-handbook/src/create_handbook.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/c1-handbook/src/create_handbook.py'
Running Command

python "/tmp/workspace/c1-handbook/src/create_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Handbook.pdf'; r=PdfReader(p); print('pages',len(r.pages)); print('last page:', r.pages[-1].extract_text()[:500])"

Finding Files

**/*.ttf in /usr/share/fonts

Editing File

~/c1-handbook/src/create_handbook.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/c1-handbook/src/create_handbook.py'
Editing File

~/c1-handbook/src/create_handbook.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/c1-handbook/src/create_handbook.py'
Running Command

python "/tmp/workspace/c1-handbook/src/create_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Handbook.pdf'; r=PdfReader(p); print('pages',len(r.pages)); print('page1',r.pages[0].extract_text()[:160]); print('last',r.pages[-1].extract_text()[:250])"

Editing File

~/c1-handbook/src/create_handbook.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/c1-handbook/src/create_handbook.py'
Editing File

~/c1-handbook/src/create_handbook.py

Successfully replaced 1 instance(s) of the string in '/tmp/workspace/c1-handbook/src/create_handbook.py'
Running Command

python "/tmp/workspace/c1-handbook/src/create_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Handbook.pdf'; r=PdfReader(p); print('pages',len(r.pages)); print('page1:',r.pages[0].extract_text()[:200]); print('last:',r.pages[-1].extract_text()[:350])"

Created an 8-page colorful C1 handbook based on the attached worksheet.
It includes:
  • 16 B2-C1 vocabulary items with English meanings, Russian translations, and 3 daily-life examples each
  • 15 C1-level conversation questions based on the article
  • A final-page model answer key for the discussion questions
  • A teacher’s answer guide for all exercises, including suggested answers for open-ended tasks

Foreign Objects C1 Handbook

PDF Document · PDF

Please recreate the colorful handbook pdf with following changes.Firstly Firstly include Russian translation under everyday use 3 sentences for vocabulary use.Secondly write proper full individual answers for individual exercises from file attached. Remove globalized , extraordinary, universal and do add B2 -C1 vocabulary along with meaning in English and later in Russian language translation under and 3 Daily life examples with Russian translation also from second blue boxe and not the first one but add only one word "wring out" on first page of pdf attached file.

Reading File
Reading File
Searching the Web

English File Advanced 3B It’s a cultural thing Foreign Objects vocabulary page 30

Browsing Directory

~/c1-handbook

Reading File
Reading File
Writing File

~/c1-handbook/src/create_handbook.py

from reportlab.lib import colors
from reportlab.lib.colors import HexColor
from reportlab.lib.enums import TA_CENTER
from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak, Table, TableStyle, KeepTogether
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
import os

ROOT='/tmp/workspace/c1-handbook'
OUT=f'{ROOT}/output/Foreign_Objects_C1_Revised_Handbook.pdf'
FONT='/usr/share/fonts/google-noto-vf/NotoSans[wght].ttf'
pdfmetrics.registerFont(TTFont('Noto', FONT)); pdfmetrics.registerFont(TTFont('NotoB', FONT))
NAVY=HexColor('#182C4C'); BLUE=HexColor('#247BA0'); TEAL=HexColor('#2A9D8F'); CORAL=HexColor('#E76F51'); GOLD=HexColor('#E9C46A'); PALE=HexColor('#F4F8FB'); LILAC=HexColor('#EEE8F8'); INK=HexColor('#233244'); GREY=HexColor('#607080'); PURPLE=HexColor('#6A3D8F')
S=getSampleStyleSheet()
def add(n, **kw): S.add(ParagraphStyle(name=n, fontName='Noto', **kw))
add('CoverK',fontName='NotoB',fontSize=11,leading=14,textColor=GOLD,alignment=TA_CENTER,spaceAfter=13)
add('CoverT',fontName='NotoB',fontSize=30,leading=36,textColor=colors.white,alignment=TA_CENTER,spaceAfter=12)
add('CoverS',fontSize=13,leading=19,textColor=HexColor('#DDEAF4'),alignment=TA_CENTER)
add('H1',fontName='NotoB',fontSize=19,leading=24,textColor=NAVY,spaceBefore=2,spaceAfter=10)
add('H2',fontName='NotoB',fontSize=12.5,leading=16,textColor=BLUE,spaceBefore=8,spaceAfter=5)
add('Body',fontSize=9.1,leading=13.2,textColor=INK,spaceAfter=6)
add('Small',fontSize=7.75,leading=10.25,textColor=INK,spaceAfter=2.5)
add('VWord',fontName='NotoB',fontSize=12,leading=15,textColor=NAVY,spaceAfter=3)
add('Rus',fontSize=8.15,leading=11,textColor=PURPLE,spaceAfter=3)
add('Ex',fontSize=7.75,leading=10.2,textColor=INK,leftIndent=6,spaceAfter=1.1)
add('ExRu',fontSize=7.5,leading=9.6,textColor=PURPLE,leftIndent=12,spaceAfter=2.1)
add('Question',fontSize=8.9,leading=12.2,textColor=INK,spaceAfter=6)

def P(x,sty='Body'): return Paragraph(x,S[sty])
def bullet(n, en, ru): return [P(f'<b>{n}.</b> {en}','Ex'),P(f'<font color="#6A3D8F">{ru}</font>','ExRu')]
def section(title, text): return [P(title,'H2'),P(text,'Body')]

# Strictly drawn from the worksheet blue activity boxes: Ex. 3, plus the requested one word from Ex. 2.
vocab=[
('wring out','to twist wet cloth, clothing, or a mop tightly so that water comes out.','выжимать: сильно скручивать мокрую ткань, одежду или швабру, чтобы удалить воду.',[
('Wring out the dishcloth before you clean the counter.','Выжми кухонную тряпку, прежде чем вытирать столешницу.'),
('After the rain, I wrung out my gloves over the sink.','После дождя я выжал перчатки над раковиной.'),
('Please wring out the mop well, or the floor will stay too wet.','Пожалуйста, хорошо выжми швабру, иначе пол останется слишком мокрым.')]),
('spill','to accidentally cause liquid or small objects to fall out of a container.','пролить, рассыпать: случайно вылить жидкость или уронить мелкие предметы из ёмкости.',[
('I spilled coffee on the table just before the meeting.','Я пролил кофе на стол прямо перед встречей.'),('Try not to spill the soup while you carry it upstairs.','Постарайся не пролить суп, пока несёшь его наверх.'),('She spilled rice on the floor and swept it up immediately.','Она рассыпала рис на пол и сразу его подмела.')]),
('flood','to cause a place to become covered with a large amount of water; as a noun, a large amount of water covering land or a room.','затопить; наводнение: покрыть помещение или территорию большим количеством воды.',[
('A blocked drain flooded the bathroom overnight.','Забитый слив затопил ванную за ночь.'),('Turn off the tap before the sink floods the kitchen.','Перекрой воду, пока раковина не затопила кухню.'),('The neighbours helped us after a burst pipe flooded the hallway.','Соседи помогли нам после того, как лопнувшая труба затопила коридор.')]),
('rip','to tear something, often by accident, leaving a hole or split.','порвать: разорвать что-либо, часто случайно, оставив дыру или разрыв.',[
('I ripped my jacket on the gate while cycling home.','Я порвал куртку о ворота, когда ехал домой на велосипеде.'),('Be careful not to rip the label off the parcel.','Будь осторожен, не оторви этикетку от посылки.'),('The children ripped the paper while opening their presents.','Дети порвали бумагу, открывая подарки.')]),
('sweep','to clean a floor or surface with a brush or broom.','подметать: очищать пол или поверхность щёткой или веником.',[
('Could you sweep the kitchen before our guests arrive?','Не мог бы ты подмести кухню до прихода гостей?'),('I sweep the balcony every Sunday morning.','Я подметаю балкон каждое воскресное утро.'),('He swept the broken glass into a dustpan.','Он смёл разбитое стекло в совок.')]),
('soak','to leave something in liquid for a period so that it becomes very wet or easier to clean.','замачивать: оставлять что-либо в жидкости на некоторое время, чтобы оно хорошо намокло или легче очистилось.',[
('Soak the pan for ten minutes before washing it.','Замочи сковороду на десять минут перед мытьём.'),('I soaked my shirt because the stain had dried.','Я замочил рубашку, потому что пятно уже высохло.'),('We let the beans soak overnight before cooking them.','Мы оставили фасоль замачиваться на ночь перед приготовлением.')]),
('stain','to leave a difficult mark on clothes, furniture, or another surface; a mark of this kind.','пятно; испачкать: оставить трудноудаляемый след на одежде, мебели или другой поверхности.',[
('Red wine can stain a white tablecloth very quickly.','Красное вино может очень быстро оставить пятно на белой скатерти.'),('There is a small stain on the sofa, but it is hardly visible.','На диване есть маленькое пятно, но его почти не видно.'),('Use cold water first so that you do not set the stain.','Сначала используй холодную воду, чтобы не закрепить пятно.')]),
('rinse','to wash something quickly with clean water, usually to remove soap or dirt.','ополаскивать: быстро промывать чистой водой, обычно чтобы удалить мыло или грязь.',[
('Rinse the cups before you put them in the dishwasher.','Ополосни чашки перед тем, как поставить их в посудомоечную машину.'),('I rinsed my hands after using the cleaning spray.','Я ополоснул руки после использования чистящего спрея.'),('Rinse the vegetables thoroughly under cold water.','Тщательно промой овощи под холодной водой.')]),
('mend','to repair something damaged, especially clothing, fabric, or a small household item.','чинить, зашивать: ремонтировать повреждённую вещь, особенно одежду, ткань или небольшой предмет быта.',[
('My grandmother mended the loose button on my coat.','Моя бабушка пришила оторвавшуюся пуговицу на моём пальто.'),('Can you mend the torn curtain before the weekend?','Ты можешь зашить порванную занавеску до выходных?'),('It is cheaper to mend this bag than to replace it.','Починить эту сумку дешевле, чем покупать новую.')]),
('wipe','to clean or dry a surface by rubbing it with a cloth, paper, or your hand.','вытирать, протирать: очищать или сушить поверхность, проводя по ней тканью, бумагой или рукой.',[
('Wipe the table after breakfast, please.','Пожалуйста, протри стол после завтрака.'),('I wiped the mirror with a soft cloth.','Я протёр зеркало мягкой тканью.'),('She wiped the rain from her glasses before entering the shop.','Она вытерла дождевые капли с очков, прежде чем войти в магазин.')])
]

questions=[
'To what extent does the article challenge the idea that household objects are culturally neutral?',
'How does Adam’s account complicate the boundary between commercial and private space?',
'Why is the Vietnamese tea set more than a decorative object in Adam’s description?',
'What does Jim’s anecdote about his Belfast basement reveal about culturally learned assumptions?',
'How does the brasero combine a practical function with a social one?',
'How does In-ha’s language convey frustration with separate taps?',
'What can fitted carpets in bathrooms suggest about comfort, habit, and practicality?',
'Why does Kasia present the absence of a bathtub as a personal loss rather than a minor difference?',
'How do climate and daily routine shape domestic arrangements in Belo Horizonte?',
'How does the historical reference to the fork reinforce the article’s argument?',
'Do international influences erase domestic differences or make them more visible? Use the text to support your view.',
'Which object most clearly creates a sense of community in the article, and why?',
'How can a visitor avoid treating unfamiliar household practices as irrational or inferior?',
'Compare In-ha’s and Kasia’s discomfort. Which response is mainly practical and which is mainly emotional?',
'What object from your own culture could be added to this article, and what would it reveal?'
]
qa=[
'It demonstrates that domestic objects are shaped by climate, routine, architecture, and social values. What feels neutral to an insider can appear striking to a visitor.',
'Adam describes homes that become shops during the day and family spaces later. This makes the separation between earning a living and private domestic life more flexible.',
'The tea set provides a shared ritual. Drinking green tea gives hosts and guests time to talk, signals hospitality, and functions as a bonding experience.',
'In Belfast a basement flat is an ordinary home, whereas his Spanish acquaintances associate basements mainly with storage. The same space therefore carries different cultural meanings.',
'It heats people under a table, but it also gathers them around the table. Its warmth encourages conversation and shared time rather than merely raising the room temperature.',
'She contrasts freezing and scalding water with the convenience of a mixer tap. Her rhetorical question, short evaluative judgement “Useless!”, and detailed consequences make her irritation clear.',
'They may show a preference for warmth, softness, and familiarity even where cleaning is harder. Domestic choices are not determined by efficiency alone.',
'A hot bath is associated with relaxation and her former routine in Lublin. Without a tub, she loses a familiar private pleasure, not simply a fixture.',
'Heat and humidity make frequent showers sensible. The utility sink supports soaking and scrubbing clothes, while a pressure cooker suits routine cooking of beans.',
'The fork was once judged bizarre, yet later became familiar. The anecdote shows that present-day judgements of foreign objects can change with time and adoption.',
'Model answer: international products may travel widely, but people adapt them to local routines and spaces. The article shows shared technologies alongside distinctive meanings and uses.',
'The Vietnamese tea set most clearly creates community because it turns hospitality into a shared, repeated activity in which conversation and trust can develop.',
'A visitor should ask respectful questions, consider climate and history, and recognise that their own habits are culturally specific rather than automatically superior.',
'In-ha’s problem is mainly practical: she cannot regulate water temperature or rinse easily. Kasia’s response is more emotional because she misses the comfort of a long bath.',
'Model answer: a samovar could be included. It would reveal a tradition of unhurried hospitality, tea drinking, and bringing people together for extended conversation.'
]

# Individual model answers for every task in the printed worksheet.
teacher=[
('Exercise 1 - Speaking: model individual answers',[
'1. My current home is typical of urban apartments in my country because it has a compact kitchen, a combined living-dining area, and limited storage. However, it is less typical in having a dedicated study, which reflects the growth of remote work.',
'2. A washing machine, kettle, and refrigerator are common household objects where I live. A samovar is less typical today, but it remains culturally meaningful because it is associated with hospitality and long conversations over tea.',
'3. Yes. In another country, I was surprised to see people remove their shoes immediately at the entrance. At first it seemed formal, but I understood that it keeps the home clean and marks the boundary between public and private space.',
'4. Rooms and objects can reflect identity through layout, decoration, religious items, family photographs, and rules about shoes, food, or guests. They show both personal taste and shared cultural habits.'
]),
('Exercise 2 - Household objects and actions',[
'climb: a ladder or stairs, for example to hang a picture or reach a high shelf.',
'cover: a bowl with a lid or cloth; a table with a tablecloth.',
'fill: a bucket, bowl, sink, or kettle with water.',
'flush: a toilet after use.',
'heat: food in a pan or a room with a heater.',
'lay: the table before a meal.',
'load: a washing machine or dishwasher.',
'run: a tap so that water flows.',
'spread: butter on bread or washing-up liquid over a sponge.',
'thread: a needle with cotton.',
'unblock: a sink, drain, or toilet.',
'wring out: a cloth, mop, or wet item of clothing.'
]),
('Exercise 3 - Problems and solutions',[
'1. The five problems are: spill some water, flood the kitchen, rip your trousers, drop a glass, and stain your top.',
'2. The five solutions are: sweep the floor after dirt or broken glass has fallen; soak jeans or another stained item before washing; rinse a glass to remove soap or residue; mend a shirt that has a hole or loose seam; wipe a table after a spill or meal.'
]),
('Exercise 4 - Differences between household objects',[
'1. Rope is thicker and stronger than string, so it is used for heavier jobs. String is thinner and used for tying lighter things.',
'2. Wire is a single thin metal strand. A cable is usually thicker and may contain several wires inside a protective covering.',
'3. A cloth is a piece of fabric used for cleaning or drying. A sponge is a soft porous object that absorbs liquid and is often used for washing.',
'4. A bucket is deeper and usually has a handle for carrying liquid. A bowl is smaller and used for holding or mixing food or small quantities of liquid.',
'5. A drill makes holes, usually using electricity or a battery. A hammer hits nails into wood or pulls them out.',
'6. A mop is used to wash a floor, usually with water. A brush has bristles and is used for scrubbing, cleaning, or sweeping depending on its type.',
'7. A nail is a smooth metal pin hammered into a surface. A screw has a spiral thread and is turned with a screwdriver.',
'8. A ladder is a portable structure used to climb temporarily. Stairs are a fixed part of a building used to move between floors.',
'9. A plaster is a small adhesive covering for a minor cut. A bandage is a longer strip of material used to cover or support an injury.',
'10. Soap is used for washing hands or the body. Washing-up liquid is designed to clean dishes and remove grease.'
]),
('Exercise 5 - Vocabulary game: sample answer set',[
'A useful model round is: “You use this to clean a wet floor, and you should wring it out afterwards.” Answer: a mop.',
'“This is a portable object with steps that helps you reach a high shelf.” Answer: a ladder.',
'“You do this to a needle before sewing.” Answer: thread it.',
'“You may need to do this to a blocked sink.” Answer: unblock it.'
]),
('Exercise 6 - Reading introduction',[
'Correct answer: 3. Definitions of normality vary across different countries. The introduction explains that objects may seem sensible and normal to local people, while visitors may find the same things surprising, confusing, or even ridiculous.'
]),
('Exercise 7 - Discussion: model individual answers',[
'1. I agree to a large extent. Living abroad makes invisible routines visible because we notice them only when they are absent or organised differently.',
'2a. I sometimes take reliable hot water and a washing machine for granted because both are available in my home every day.',
'2b. I once reacted with confusion to the custom of leaving shoes outside a home, but later understood its hygienic and cultural logic.',
'2c. My culture has adopted coffee-shop culture from abroad, but local cafés have adapted it to local food and social habits.'
]),
('Exercise 8 - Article discussion: model individual answers',[
'1. Yes. Kettles, toasters, washing machines, showers, pressure cookers, and tiled rooms are all familiar in many homes, although their frequency varies by region.',
'2. I would like a brasero because it creates a warm shared space around a table. I would also like a utility sink because it makes washing delicate clothes easier.',
'3. The use of a ground-floor shop as a family dining room seems strangest to me because I am used to a firm separation between work and home. However, it is understandable in a household business.',
'4. Yes. The article shows that climate, space, work, and family life influence household objects. For instance, frequent showers in Brazil are connected to heat and humidity.'
]),
('Exercise 9 - Matching people and summaries',[
'1. Jim - Spanish people react with surprise when he says he lived in a basement flat in Belfast.',
'2. Adam - he describes business on the ground floor and family life in the same space.',
'3. Kasia - she no longer has the luxury of soaking in a hot bath.',
'4. In-ha - she has become used to old, draughty British houses.',
'5. Jim - the brasero helps people relax together under a warm table.',
'6. Adam - the tea set and green-tea ritual create a bonding experience.',
'7. Kasia - she finds the separate sink by the washing machine unusual.',
'8. In-ha - she expresses strong frustration about separate taps and missing plugs.'
]),
('Exercise 10 - Personal response: model individual answers',[
'1. A samovar, a large dining table, and indoor slippers can reflect national culture. The samovar represents tea hospitality, the table reflects long shared meals, and slippers reflect a preference for keeping the home clean and comfortable.',
'2. I strongly associate a tatami mat with Japan, a paellera with Spain, and a samovar with Russia. Each object is linked to a distinctive food, ritual, or domestic tradition.',
'3. I would find it hardest to live without a refrigerator, a washing machine, and reliable hot water because they protect food, save time, and make daily hygiene manageable.'
]),
('Exercise 11 - Group decision: model answer',[
'The three hardest things to live without are reliable hot water, a refrigerator, and a washing machine. Hot water supports hygiene and comfort; a refrigerator prevents food from spoiling; and a washing machine saves substantial time and physical effort. A strong group answer should state criteria, compare alternatives, and acknowledge that different climates and lifestyles may produce different choices.'
])
]

def cover(c,doc):
 c.saveState(); c.setFillColor(NAVY); c.rect(0,0,A4[0],A4[1],fill=1,stroke=0); c.setFillColor(TEAL); c.circle(A4[0]-1.5*cm,A4[1]-1.8*cm,3.4*cm,fill=1,stroke=0); c.setFillColor(CORAL); c.circle(1.0*cm,1.3*cm,2.4*cm,fill=1,stroke=0); c.restoreState()
def footer(c,doc):
 c.saveState(); c.setStrokeColor(HexColor('#DCE7EF')); c.line(1.55*cm,1.25*cm,A4[0]-1.55*cm,1.25*cm); c.setFillColor(GREY); c.setFont('Noto',7.5); c.drawString(1.55*cm,.82*cm,'Foreign Objects | C1 Vocabulary & Teacher Handbook'); c.drawRightString(A4[0]-1.55*cm,.82*cm,str(c.getPageNumber())); c.restoreState()

os.makedirs(os.path.dirname(OUT),exist_ok=True)
doc=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.55*cm,leftMargin=1.55*cm,topMargin=1.45*cm,bottomMargin=1.65*cm)
story=[Spacer(1,4.0*cm),P('CULTURE & IDENTITY | UNIT 3','CoverK'),P('Foreign Objects','CoverT'),P('Revised C1 Vocabulary, Conversation<br/>and Teacher Handbook','CoverS'),Spacer(1,.9*cm),P('<b>WHAT IS INSIDE</b><br/>Vocabulary sourced from the worksheet activity boxes, with English definitions, Russian translations, and translated daily-life examples.<br/><br/>15 C1 discussion questions, a final-page answer key, and full individual model answers for Exercises 1-11.','CoverS'),PageBreak()]
story += [P('Vocabulary from the worksheet','H1'),P('Selection note: the lexical items below come from the <b>second blue activity box (Exercise 3)</b>. The only item included from the first activity box (Exercise 2) is <b>wring out</b>, as requested. The earlier entries <i>globalized, extraordinary</i>, and <i>universal</i> have been removed.','Body')]
for word,eng,rus,exs in vocab:
 content=[P(word,'VWord'),P(f'<b>English meaning:</b> {eng}','Small'),P(f'<b>Перевод:</b> {rus}','Rus')]
 for i,(en,ru) in enumerate(exs,1): content += bullet(i,en,ru)
 t=Table([[content]],colWidths=[17.8*cm]); t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),PALE if word not in ('wring out','soak','stain') else LILAC),('BOX',(0,0),(-1,-1),.55,HexColor('#C7D9E7')),('LEFTPADDING',(0,0),(-1,-1),9),('RIGHTPADDING',(0,0),(-1,-1),9),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),6)])); story += [KeepTogether(t),Spacer(1,6)]
story += [PageBreak(),P('C1 conversation questions','H1'),P('Use the article “Foreign Objects” as evidence. These prompts require comparison, evaluation, and precise justification. Model answers are on the final page.','Body')]
for i,q in enumerate(questions,1): story.append(P(f'<b>{i}.</b> {q}','Question'))
story += [PageBreak(),P('Teacher’s Book: full model answers','H1'),P('Open speaking tasks do not have one objectively correct response. The answers below are complete C1-level models that directly answer each individual prompt. Other answers are acceptable when accurate, well-developed, and clearly expressed.','Body')]
for title,items in teacher:
 story.append(P(title,'H2'))
 for it in items: story.append(P(it,'Body'))
story += [PageBreak(),P('Answer key: C1 conversation questions','H1'),P('These are model responses. Equivalent answers are valid when they are textually grounded, nuanced, and clearly explained.','Body')]
for i,(q,a) in enumerate(zip(questions,qa),1): story += [P(f'<b>{i}. {q}</b>','Small'),P(a,'Body')]
doc.build(story,onFirstPage=cover,onLaterPages=footer)
print(OUT)
Running Command

python -c "p='/tmp/workspace/c1-handbook/src/revised_handbook.py'; s='''from reportlab.lib.pagesizes import A4 from reportlab.lib.colors import HexColor, white from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak, Table, TableStyle, KeepTogether from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont import os F='/usr/share/fonts/google-noto-vf/NotoSans[wght].ttf'; pdfmetrics.registerFont(TTFont('Noto',F)) OUT='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Revised_Handbook.pdf' N=HexColor('#182C4C'); B=HexColor('#247BA0'); T=HexColor('#2A9D8F'); C=HexColor('#E76F51'); G=HexColor('#E9C46A'); P=HexColor('#F4F8FB'); L=HexColor('#EEE8F8'); I=HexColor('#233244'); R=HexColor('#6A3D8F') st=getSampleStyleSheet() def a(n,fs,lead,col=I,bold=False,align=0,after=5): st.add(ParagraphStyle(n,fontName='Noto',fontSize=fs,leading=lead,textColor=col,alignment=align,spaceAfter=after)) a('coverk',11,14,G,1,TA_CENTER,13);a('covert',30,36,white,1,TA_CENTER,12);a('covers',13,19,HexColor('#DDEAF4'),0,TA_CENTER,8);a('h1',19,24,N,1,0,10);a('h2',12,16,B,1,0,5);a('body',9,13,I,0,0,6);a('small',7.7,10.1,I,0,0,3);a('word',12,15,N,1,0,3);a('ru',8,11,R,0,0,3);a('ex',7.7,10,I,0,0,1);a('exru',7.5,9.7,R,0,0,2);a('q',8.9,12.1,I,0,0,6) def p(x,s='body'): return Paragraph(x,st[s]) v=[ ('wring out','to twist wet cloth, clothing, or a mop tightly so that water comes out.','выжимать: сильно скручивать мокрую ткань, одежду или швабру, чтобы удалить воду.',['Wring out the dishcloth before you clean the counter.|Выжми кухонную тряпку, прежде чем вытирать столешницу.','After the rain, I wrung out my gloves over the sink.|После дождя я выжал перчатки над раковиной.','Please wring out the mop well, or the floor will stay too wet.|Пожалуйста, хорошо выжми швабру, иначе пол останется слишком мокрым.']), ('spill','to accidentally cause liquid or small objects to fall out of a container.','пролить, рассыпать: случайно вылить жидкость или рассыпать содержимое ёмкости.',['I spilled coffee on the table just before the meeting.|Я пролил кофе на стол прямо перед встречей.','Try not to spill the soup while you carry it upstairs.|Постарайся не пролить суп, пока несёшь его наверх.','She spilled rice on the floor and swept it up immediately.|Она рассыпала рис на пол и сразу его подмела.']), ('flood','to cover a room or place with a large amount of water.','затопить: покрыть помещение или место большим количеством воды.',['A blocked drain flooded the bathroom overnight.|Забитый слив затопил ванную за ночь.','Turn off the tap before the sink floods the kitchen.|Перекрой воду, пока раковина не затопила кухню.','A burst pipe flooded the hallway.|Лопнувшая труба затопила коридор.']), ('rip','to tear something, often by accident, leaving a hole or split.','порвать: разорвать что-либо, часто случайно, оставив дыру или разрыв.',['I ripped my jacket on the gate while cycling home.|Я порвал куртку о ворота, когда ехал домой на велосипеде.','Be careful not to rip the label off the parcel.|Будь осторожен, не оторви этикетку от посылки.','The children ripped the paper while opening their presents.|Дети порвали бумагу, открывая подарки.']), ('sweep','to clean a floor or surface with a broom or brush.','подметать: очищать пол или поверхность веником или щёткой.',['Could you sweep the kitchen before our guests arrive?|Не мог бы ты подмести кухню до прихода гостей?','I sweep the balcony every Sunday morning.|Я подметаю балкон каждое воскресное утро.','He swept the broken glass into a dustpan.|Он смёл разбитое стекло в совок.']), ('soak','to leave something in liquid for a period so that it becomes wet or easier to clean.','замачивать: оставлять что-либо в жидкости, чтобы оно намокло или легче очистилось.',['Soak the pan for ten minutes before washing it.|Замочи сковороду на десять минут перед мытьём.','I soaked my shirt because the stain had dried.|Я замочил рубашку, потому что пятно уже высохло.','We let the beans soak overnight before cooking them.|Мы оставили фасоль замачиваться на ночь перед приготовлением.']), ('stain','to leave a difficult mark on fabric or a surface; also, such a mark.','пятно; испачкать: оставить трудноудаляемый след на ткани или поверхности.',['Red wine can stain a white tablecloth very quickly.|Красное вино может очень быстро оставить пятно на белой скатерти.','There is a small stain on the sofa, but it is hardly visible.|На диване есть маленькое пятно, но его почти не видно.','Use cold water first so that you do not set the stain.|Сначала используй холодную воду, чтобы не закрепить пятно.']), ('rinse','to wash something quickly with clean water to remove soap or dirt.','ополаскивать: быстро промывать чистой водой, чтобы удалить мыло или грязь.',['Rinse the cups before you put them in the dishwasher.|Ополосни чашки перед тем, как поставить их в посудомоечную машину.','I rinsed my hands after using the cleaning spray.|Я ополоснул руки после использования чистящего спрея.','Rinse the vegetables thoroughly under cold water.|Тщательно промой овощи под холодной водой.']), ('mend','to repair something damaged, especially clothing or fabric.','чинить, зашивать: ремонтировать повреждённую вещь, особенно одежду или ткань.',['My grandmother mended the loose button on my coat.|Моя бабушка пришила оторвавшуюся пуговицу на моём пальто.','Can you mend the torn curtain before the weekend?|Ты можешь зашить порванную занавеску до выходных?','It is cheaper to mend this bag than to replace it.|Починить эту сумку дешевле, чем покупать новую.']), ('wipe','to clean or dry a surface by rubbing it with a cloth or paper.','вытирать, протирать: очищать или сушить поверхность тканью или бумагой.',['Wipe the table after breakfast, please.|Пожалуйста, протри стол после завтрака.','I wiped the mirror with a soft cloth.|Я протёр зеркало мягкой тканью.','She wiped the rain from her glasses before entering the shop.|Она вытерла дождевые капли с очков, прежде чем войти в магазин.'])] qs=['To what extent does the article challenge the idea that household objects are culturally neutral?','How does Adam’s account complicate the boundary between commercial and private space?','Why is the Vietnamese tea set more than a decorative object in Adam’s description?','What does Jim’s anecdote about his Belfast basement reveal about culturally learned assumptions?','How does the brasero combine a practical function with a social one?','How does In-ha’s language convey frustration with separate taps?','What can fitted carpets in bathrooms suggest about comfort, habit, and practicality?','Why does Kasia present the absence of a bathtub as a personal loss rather than a minor difference?','How do climate and daily routine shape domestic arrangements in Belo Horizonte?','How does the historical reference to the fork reinforce the article’s argument?','Do international influences erase domestic differences or make them more visible? Use the text to support your view.','Which object most clearly creates a sense of community in the article, and why?','How can a visitor avoid treating unfamiliar household practices as irrational or inferior?','Compare In-ha’s and Kasia’s discomfort. Which response is mainly practical and which is mainly emotional?','What object from your own culture could be added to this article, and what would it reveal?'] ans=['It shows that objects are shaped by climate, routine, architecture, and social values. What feels neutral to an insider can be striking to a visitor.','Adam describes homes that are shops during the day and family spaces later. The division between earning a living and private life is therefore flexible.','The tea set creates a shared ritual of hospitality. It gives hosts and guests time to talk and develop trust.','A basement is ordinary housing in Belfast but is associated with storage in Spain. The same space therefore has different learned meanings.','It provides warmth under the table, but it also brings people together around the table and encourages shared conversation.','She contrasts freezing and scalding water with a mixer tap, lists practical consequences, and ends with the emphatic judgement “Useless!”.','They can indicate a preference for warmth and familiarity even where cleaning is harder. Efficiency does not determine domestic choices by itself.','A hot bath represents relaxation and a familiar private routine from Lublin. Its absence feels like the loss of a valued comfort.','Heat and humidity encourage frequent showers; the utility sink supports soaking and scrubbing clothes; the pressure cooker supports everyday bean cooking.','The fork was once dismissed as strange but later became ordinary. This shows that cultural judgements can change through time and adoption.','Model answer: products can travel widely, but local routines and spaces give them distinct meanings. The text shows shared technologies alongside different practices.','The tea set creates community most clearly because it turns hospitality into a repeated social activity that supports conversation and closeness.','A visitor should ask respectful questions, consider climate and history, and recognise that their own habits are culturally specific.','In-ha’s discomfort is chiefly practical because she cannot regulate or use water conveniently. Kasia’s is more emotional because she misses bathing.','Model answer: a samovar could be included. It would reveal a tradition of tea hospitality and long shared conversation.'] ex=[('Exercise 1: Speaking - individual model answers',['1. My current home is typical of urban apartments in my country because it has a compact kitchen, a combined living-dining area, and limited storage. It is less typical in having a dedicated study, which reflects remote work.','2. A washing machine, kettle, and refrigerator are common. A samovar is less common today, but it remains culturally meaningful because it is linked to hospitality and long conversations over tea.','3. Yes. I was surprised to see shoes removed at the entrance of a home abroad. I later understood that this protects cleanliness and marks a boundary between outdoor and private space.','4. Layout, decoration, religious items, family photographs, and rules about food or guests can reflect both personal identity and cultural habits.']),('Exercise 2: Household objects and actions',['climb a ladder or stairs; cover a bowl with a lid or a table with a cloth; fill a bucket, bowl, sink, or kettle; flush a toilet; heat food or a room; lay the table; load a washing machine or dishwasher; run a tap; spread butter or washing-up liquid; thread a needle; unblock a sink, drain, or toilet; wring out a cloth, mop, or wet clothing.']),('Exercise 3: Problems and solutions',['1. Problems: spill some water, flood the kitchen, rip your trousers, drop a glass, and stain your top.','2. Solutions: sweep the floor after dirt or glass has fallen; soak jeans before washing; rinse a glass to remove soap; mend a shirt with a hole; wipe a table after a spill or meal.']),('Exercise 4: Differences',['1. Rope is thicker and stronger than string; string is for lighter tying. 2. Wire is a thin metal strand; a cable is thicker and can contain several wires. 3. A cloth is fabric; a sponge is porous and absorbs water. 4. A bucket is deeper with a handle; a bowl is smaller for holding or mixing. 5. A drill makes holes; a hammer drives nails.','6. A mop washes floors; a brush scrubs or sweeps. 7. A nail is hammered in; a screw has a spiral thread and is turned. 8. A ladder is portable; stairs are fixed. 9. A plaster covers a small cut; a bandage covers or supports an injury. 10. Soap cleans hands/body; washing-up liquid cleans dishes and grease.']),('Exercise 5: Vocabulary game - model answers',['“You use this to clean a wet floor, and you should wring it out afterwards.” Answer: a mop. “A portable object with steps for a high shelf.” Answer: a ladder. “You do this to a needle before sewing.” Answer: thread it. “You may need to do this to a blocked sink.” Answer: unblock it.']),('Exercise 6: Reading introduction',['Correct answer: 3. Definitions of normality vary across different countries. The introduction states that local objects may feel normal to residents but surprising or ridiculous to visitors.']),('Exercise 7: Discussion - individual model answers',['1. I agree to a large extent because living abroad makes invisible routines visible when they are absent or organised differently.','2a. I take reliable hot water and a washing machine for granted. 2b. I initially found leaving shoes outside a home confusing, but later understood its hygienic logic. 2c. My culture adopted café culture, but local cafés adapted it to local food and social habits.']),('Exercise 8: Article discussion - individual model answers',['1. Kettles, showers, washing machines, and pressure cookers are familiar in many homes, although their use varies by region.','2. I would like a brasero because it makes a table warm and sociable. I would also like a utility sink for delicate clothes.','3. A family dining in a shop seems strange to me because I expect work and home to be separate, though it is practical for a household business.','4. Yes. The article shows that climate, work, family life, and space shape domestic objects. Frequent showers in Brazil, for example, are connected to heat and humidity.']),('Exercise 9: Matching',['1 Jim. 2 Adam. 3 Kasia. 4 In-ha. 5 Jim. 6 Adam. 7 Kasia. 8 In-ha.']),('Exercise 10: Personal response - individual model answers',['1. A samovar, a large dining table, and indoor slippers can reflect national culture through tea hospitality, shared meals, and cleanliness.','2. I associate tatami mats with Japan, a paellera with Spain, and a samovar with Russia. Each is linked to a distinctive domestic tradition.','3. I would find it hardest to live without a refrigerator, a washing machine, and reliable hot water because they protect food, save time, and support hygiene.']),('Exercise 11: Group decision - model answer',['The three hardest things to live without are reliable hot water, a refrigerator, and a washing machine. Hot water supports hygiene and comfort; a refrigerator prevents food from spoiling; and a washing machine saves time and physical effort. Different climates and lifestyles may justify another ranking.'])] def cover(c,d): c.saveState();c.setFillColor(N);c.rect(0,0,A4[0],A4[1],fill=1,stroke=0);c.setFillColor(T);c.circle(A4[0]-1.5*cm,A4[1]-1.8*cm,3.4*cm,fill=1,stroke=0);c.setFillColor(C);c.circle(1*cm,1.3*cm,2.4*cm,fill=1,stroke=0);c.restoreState() def foot(c,d): c.saveState();c.setStrokeColor(HexColor('#DCE7EF'));c.line(1.55*cm,1.25*cm,A4[0]-1.55*cm,1.25*cm);c.setFillColor(HexColor('#607080'));c.setFont('Noto',7.5);c.drawString(1.55*cm,.82*cm,'Foreign Objects | Revised C1 Handbook');c.drawRightString(A4[0]-1.55*cm,.82*cm,str(c.getPageNumber()));c.restoreState() d=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.55*cm,leftMargin=1.55*cm,topMargin=1.45*cm,bottomMargin=1.65*cm);z=[Spacer(1,4*cm),p('CULTURE & IDENTITY | UNIT 3','coverk'),p('Foreign Objects','covert'),p('Revised C1 Vocabulary, Conversation<br/>and Teacher Handbook','covers'),Spacer(1,.8*cm),p('<b>WHAT IS INSIDE</b><br/>10 selected B2-C1 household words, English meanings, Russian translations, and Russian translations for every daily-life example.<br/><br/>15 C1 conversation questions, full individual model answers for Exercises 1-11, and a final-page answer key.','covers'),PageBreak(),p('Vocabulary from the worksheet','h1'),p('Selection rule: vocabulary is taken from the second blue activity box (Exercise 3). The only item taken from the first blue activity box (Exercise 2) is <b>wring out</b>. The words <i>globalized</i>, <i>extraordinary</i>, and <i>universal</i> have been removed.','body')] for w,e,r,xx in v: c=[p(w,'word'),p('<b>English meaning:</b> '+e,'small'),p('<b>Перевод:</b> '+r,'ru')] for i,x in enumerate(xx,1): en,ru=x.split('|');c += [p(f'<b>{i}.</b> {en}','ex'),p(ru,'exru')] tb=Table([[c]],colWidths=[17.8*cm]);tb.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),L if w in ['wring out','soak','stain'] else P),('BOX',(0,0),(-1,-1),.55,HexColor('#C7D9E7')),('LEFTPADDING',(0,0),(-1,-1),9),('RIGHTPADDING',(0,0),(-1,-1),9),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),6)]));z += [KeepTogether(tb),Spacer(1,6)] z += [PageBreak(),p('C1 conversation questions','h1'),p('Use the article “Foreign Objects” as evidence. Model answers are on the final page.','body')] for i,q in enumerate(qs,1):z.append(p(f'<b>{i}.</b> {q}','q')) z += [PageBreak(),p('Teacher’s Book: full model answers','h1'),p('For open tasks, these are complete individual C1-level models. Other answers are acceptable when accurate, developed, and clearly expressed.','body')] for title,items in ex: z.append(p(title,'h2')) for x in items:z.append(p(x,'body')) z += [PageBreak(),p('Answer key: C1 conversation questions','h1'),p('Model responses. Equivalent answers are valid when they are textually grounded and clearly explained.','body')] for i,(q,x) in enumerate(zip(qs,ans),1):z += [p(f'<b>{i}. {q}</b>','small'),p(x,'body')] d.build(z,onFirstPage=cover,onLaterPages=foot);print(OUT) ''';open(p,'w',encoding='utf8').write(s)" && python "/tmp/workspace/c1-handbook/src/revised_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Revised_Handbook.pdf';r=PdfReader(p);print('pages=',len(r.pages));print(r.pages[-1].extract_text()[:350])"

Running Command

python -c "p='/tmp/workspace/c1-handbook/src/revised_handbook.py';s=open(p,encoding='utf8').read(); mp={'coverk':'coverkx','covert':'covertx','covers':'coversx','h1':'h1x','h2':'h2x','body':'bodyx','small':'smallx','word':'wordx','ru':'rux','exru':'exrux','ex':'exx','q':'qx'};\nfor a,b in mp.items(): s=s.replace(\"'\"+a+\"'\",\"'\"+b+\"'\");\nopen(p,'w',encoding='utf8').write(s)" && python "/tmp/workspace/c1-handbook/src/revised_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Revised_Handbook.pdf';r=PdfReader(p);print('pages=',len(r.pages));print('first=',r.pages[0].extract_text()[:160]);print('last=',r.pages[-1].extract_text()[:240])"

Running Command

python -c "p='/tmp/workspace/c1-handbook/src/revised_handbook.py';s=open(p,encoding='utf8').read();mp={'coverk':'coverkx','covert':'covertx','covers':'coversx','h1':'h1x','h2':'h2x','body':'bodyx','small':'smallx','word':'wordx','ru':'rux','exru':'exrux','ex':'exx','q':'qx'};[(globals().update(s=s.replace(chr(39)+a+chr(39),chr(39)+b+chr(39))) ) for a,b in mp.items()];open(p,'w',encoding='utf8').write(s)" && python "/tmp/workspace/c1-handbook/src/revised_handbook.py" && python -c "from pypdf import PdfReader; p='/tmp/workspace/c1-handbook/output/Foreign_Objects_C1_Revised_Handbook.pdf';r=PdfReader(p);print('pages=',len(r.pages));print('first=',r.pages[0].extract_text()[:160]);print('last=',r.pages[-1].extract_text()[:240])"

Recreated the handbook with your requested changes:
  • Removed globalized, extraordinary, and universal
  • Added vocabulary only from the second blue box (Exercise 3), plus wring out from the first blue box
  • Added Russian translations beneath all three daily-life example sentences
  • Kept English meanings followed by Russian translations
  • Expanded the Teacher’s Book with full individual model answers for Exercises 1-11
  • Included 15 C1 conversation questions and a final-page answer key

Foreign Objects C1 Revised Handbook

PDF Document · PDF

Please create a colorful handbook pdf with the following vocabulary words along with it's short English meaning and under that Russian translation and 3 daily life examples also in English and Russian translation.

Please send the vocabulary word list you want included. Once you provide it, I’ll create a colorful PDF handbook with for each word:
  • Short English meaning
  • Russian translation
  • 3 daily-life example sentences in English
  • Russian translation beneath each example

Skeptical Scrupulous Redundant Garrolous Taciturn Forthright Reticent Persuasive or Compelling Trailblazer Alluring Phenomenal Formidable Scrupulous Astounding Tenacious Concise

Reading File
Browsing Directory

~/

Searching the Web

Merriam-Webster garrulous definition scrupulous skeptical reticent concise

Running Command

mkdir -p "/tmp/workspace/advanced-vocabulary-handbook/src" "/tmp/workspace/advanced-vocabulary-handbook/output" && python -c "p='/tmp/workspace/advanced-vocabulary-handbook/src/create_pdf.py'; s='''from reportlab.lib.pagesizes import A4 from reportlab.lib.colors import HexColor, white from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.enums import TA_CENTER from reportlab.lib.units import cm from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak, Table, TableStyle, KeepTogether from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont F='/usr/share/fonts/google-noto-vf/NotoSans[wght].ttf';pdfmetrics.registerFont(TTFont('Noto',F)) OUT='/tmp/workspace/advanced-vocabulary-handbook/output/Advanced_Vocabulary_English_Russian_Handbook.pdf' N=HexColor('#182C4C');B=HexColor('#247BA0');T=HexColor('#2A9D8F');C=HexColor('#E76F51');G=HexColor('#E9C46A');P=HexColor('#F4F8FB');L=HexColor('#EEE8F8');I=HexColor('#233244');R=HexColor('#6A3D8F') st=getSampleStyleSheet() def add(n,fs,ld,col=I,al=0,sp=5):st.add(ParagraphStyle(n,fontName='Noto',fontSize=fs,leading=ld,textColor=col,alignment=al,spaceAfter=sp)) add('ct',30,36,white,TA_CENTER,12);add('ck',11,14,G,TA_CENTER,13);add('cs',13,19,HexColor('#DDEAF4'),TA_CENTER,8);add('h',19,24,N,0,10);add('b',9,13,I,0,6);add('w',13,16,N,0,3);add('m',8,11,I,0,3);add('r',8,11,R,0,3);add('e',7.7,10,I,0,1);add('er',7.5,9.7,R,0,2) def p(x,n='b'):return Paragraph(x,st[n]) words=[ ('Skeptical','having doubts; not easily convinced.','скептически настроенный; сомневающийся.',['I was skeptical about the online offer, so I read the reviews first.|Я скептически отнёсся к онлайн-предложению, поэтому сначала прочитал отзывы.','She is skeptical that the delivery will arrive today.|Она сомневается, что доставка придёт сегодня.','My parents were skeptical until they saw the final result.|Мои родители сомневались, пока не увидели окончательный результат.']), ('Scrupulous','very careful, honest, and attentive to details.','скрупулёзный; чрезвычайно добросовестный и внимательный к деталям.',['He is scrupulous about checking every bill before he pays it.|Он скрупулёзно проверяет каждый счёт перед оплатой.','She keeps a scrupulous record of her monthly expenses.|Она тщательно ведёт учёт ежемесячных расходов.','Our neighbour is scrupulous about recycling correctly.|Наш сосед очень добросовестно сортирует отходы для переработки.']), ('Redundant','no longer needed; unnecessary.','избыточный; ненужный.',['Delete redundant files to free up space on your phone.|Удалите ненужные файлы, чтобы освободить место на телефоне.','That extra paragraph is redundant because you already explained the idea.|Этот дополнительный абзац лишний, потому что вы уже объяснили эту мысль.','We removed redundant items from the shopping list.|Мы убрали лишние позиции из списка покупок.']), ('Garrulous','talking a lot, often for too long.','болтливый, многословный.',['My garrulous taxi driver told me his whole life story.|Мой болтливый водитель такси рассказал мне всю свою жизнь.','The garrulous guest kept everyone awake after dinner.|Болтливый гость не давал всем спать после ужина.','He becomes garrulous when he is nervous.|Он становится многословным, когда нервничает.']), ('Taciturn','quiet and unwilling to say much.','молчаливый, неразговорчивый.',['My usually taciturn brother gave a very short answer.|Мой обычно молчаливый брат дал очень короткий ответ.','She was taciturn during the first part of the meeting.|Она была неразговорчивой в первой части встречи.','The taciturn waiter nodded and brought our order.|Молчаливый официант кивнул и принёс наш заказ.']), ('Forthright','direct, honest, and clear in speech or behaviour.','прямой, откровенный.',['Please be forthright if you disagree with the plan.|Пожалуйста, скажи прямо, если ты не согласен с планом.','Her forthright feedback helped me improve the presentation.|Её откровенный отзыв помог мне улучшить презентацию.','He gave a forthright answer instead of avoiding the question.|Он дал прямой ответ вместо того, чтобы избегать вопроса.']), ('Reticent','not willing to reveal thoughts or feelings easily.','сдержанный, не склонный делиться мыслями или чувствами.',['She is reticent about her private life at work.|Она сдержанна в вопросах личной жизни на работе.','He seemed reticent at first, but later joined the conversation.|Сначала он казался замкнутым, но позже присоединился к разговору.','My friend is reticent about asking for help.|Мой друг неохотно просит о помощи.']), ('Persuasive','able to make people believe or do something.','убедительный; способный убедить.',['Her persuasive message convinced us to try the new café.|Её убедительное сообщение убедило нас попробовать новое кафе.','You need persuasive reasons if you want to change the schedule.|Нужны убедительные причины, если вы хотите изменить расписание.','He made a persuasive case for sharing a taxi.|Он убедительно объяснил, почему нам стоит ехать на одном такси.']), ('Compelling','very convincing or extremely interesting.','убедительный; захватывающий, неотразимый.',['She gave a compelling reason for leaving early.|Она привела вескую причину уйти пораньше.','The documentary made a compelling case for saving water.|Документальный фильм убедительно показал необходимость экономить воду.','His story was so compelling that nobody checked their phones.|Его рассказ был настолько захватывающим, что никто не смотрел в телефон.']), ('Trailblazer','a person who is among the first to do something new.','первопроходец; человек, прокладывающий новый путь.',['My aunt was a trailblazer because she started her own business years ago.|Моя тётя была первопроходцем, потому что много лет назад открыла собственное дело.','The chef became a trailblazer in using local ingredients.|Шеф-повар стал первопроходцем в использовании местных продуктов.','She is a trailblazer for young women in technology.|Она прокладывает путь молодым женщинам в сфере технологий.']), ('Alluring','very attractive or tempting.','привлекательный, заманчивый.',['The smell of fresh bread was too alluring to ignore.|Запах свежего хлеба был слишком заманчивым, чтобы его игнорировать.','The shop offered an alluring discount on winter coats.|Магазин предложил привлекательную скидку на зимние пальто.','A quiet evening at home sounded more alluring than a crowded party.|Тихий вечер дома казался более привлекательным, чем многолюдная вечеринка.']), ('Phenomenal','extremely impressive or unusually great.','феноменальный, выдающийся.',['She did a phenomenal job organising the family dinner.|Она феноменально организовала семейный ужин.','The new restaurant has received phenomenal reviews.|Новый ресторан получил выдающиеся отзывы.','We had a phenomenal view from the train window.|У нас был потрясающий вид из окна поезда.']), ('Formidable','very difficult, powerful, or impressive.','грозный; очень трудный или внушительный.',['Cleaning the garage felt like a formidable task.|Уборка гаража казалась очень трудной задачей.','Learning to drive in a big city can be formidable at first.|Научиться водить машину в большом городе поначалу может быть непросто.','She is a formidable cook who can feed twenty people easily.|Она замечательный и очень опытный повар, способный легко накормить двадцать человек.']), ('Astounding','extremely surprising or impressive.','поразительный, ошеломляющий.',['The repair bill was astounding, so we asked for another estimate.|Счёт за ремонт был ошеломляющим, поэтому мы запросили другую смету.','It is astounding how quickly the children learned the game.|Поразительно, как быстро дети научились игре.','The hotel room had an astounding view of the sea.|Из номера отеля открывался потрясающий вид на море.']), ('Tenacious','not giving up easily; determined.','упорный, настойчивый.',['She was tenacious and kept applying for jobs until she succeeded.|Она была настойчивой и продолжала подавать заявки на работу, пока не добилась успеха.','Be tenacious when you are learning a difficult skill.|Будьте упорны, когда осваиваете сложный навык.','His tenacious search finally found the missing keys.|Его настойчивые поиски наконец нашли потерянные ключи.']), ('Concise','brief but clear, without unnecessary words.','краткий и ясный.',['Please keep your email concise and include the main request.|Пожалуйста, сделайте письмо кратким и укажите основную просьбу.','Her concise instructions made the recipe easy to follow.|Её краткие инструкции сделали рецепт простым для выполнения.','I need a concise summary before the call starts.|Мне нужно краткое резюме до начала звонка.'])] def cover(c,d): c.saveState();c.setFillColor(N);c.rect(0,0,A4[0],A4[1],fill=1,stroke=0);c.setFillColor(T);c.circle(A4[0]-1.5*cm,A4[1]-1.8*cm,3.4*cm,fill=1,stroke=0);c.setFillColor(C);c.circle(1*cm,1.3*cm,2.4*cm,fill=1,stroke=0);c.restoreState() def foot(c,d): c.saveState();c.setFillColor(HexColor('#607080'));c.setFont('Noto',7.5);c.drawString(1.55*cm,.82*cm,'Advanced Vocabulary | English-Russian Handbook');c.drawRightString(A4[0]-1.55*cm,.82*cm,str(c.getPageNumber()));c.restoreState() d=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.55*cm,leftMargin=1.55*cm,topMargin=1.45*cm,bottomMargin=1.55*cm);z=[Spacer(1,4*cm),p('B2-C1 VOCABULARY','ck'),p('Advanced English Vocabulary','ct'),p('English-Russian Handbook','cs'),Spacer(1,.8*cm),p('<b>16 selected words</b><br/>Short English meanings, Russian translations, and three practical bilingual examples for every entry.<br/><br/><i>Note:</i> “Garrolous” has been standardised as <b>garrulous</b>. “Scrupulous” was listed twice, so it appears once. “Persuasive” and “compelling” are included as separate words because their meanings are related but not identical.','cs'),PageBreak(),p('Vocabulary bank','h')] for i,(w,m,r,ex) in enumerate(words): parts=[p(w,'w'),p('<b>English meaning:</b> '+m,'m'),p('<b>Русский перевод:</b> '+r,'r')] for n,x in enumerate(ex,1): e,rr=x.split('|');parts += [p(f'<b>{n}.</b> {e}','e'),p(rr,'er')] tb=Table([[parts]],colWidths=[17.8*cm]);tb.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),L if i%2==0 else P),('BOX',(0,0),(-1,-1),.55,HexColor('#C7D9E7')),('LEFTPADDING',(0,0),(-1,-1),9),('RIGHTPADDING',(0,0),(-1,-1),9),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),6)]));z += [KeepTogether(tb),Spacer(1,6)] d.build(z,onFirstPage=cover,onLaterPages=foot);print(OUT) ''';open(p,'w',encoding='utf-8').write(s)" && python "/tmp/workspace/advanced-vocabulary-handbook/src/create_pdf.py" && python -c "from pypdf import PdfReader;p='/tmp/workspace/advanced-vocabulary-handbook/output/Advanced_Vocabulary_English_Russian_Handbook.pdf';r=PdfReader(p);print('pages',len(r.pages));print(r.pages[1].extract_text()[:500])"

Created the colorful English-Russian vocabulary handbook.
It includes:
  • 16 advanced vocabulary words
  • Short English meaning for each word
  • Russian translation
  • 3 daily-life examples in English for every word
  • Russian translation beneath each example
I corrected “Garrolous” to “garrulous”, included scrupulous once because it was repeated, and treated persuasive and compelling as separate words.

Advanced Vocabulary English Russian Handbook

PDF Document · PDF

This is a shared conversation. Sign in to Orris to start your own chat.