Please create a handbook pdf colorful from the file attached.Please explain topic past simple and past continuous tense in a very easy way for 4th grade ESL student for exam Tommorow .Use information from file attached.Akso later explain difference between past simple and past continuous tense in short and easy way for Tommorow exam.

Reading File
Browsing Directory

~/

Searching the Web

past simple past continuous tense ESL children explanation grammar

Browsing Directory

~/attachments/63c675be-97b0-4fcc-a0cf-c1e0462e5cab

Running Command

python -c "from pypdf import PdfReader; p='/tmp/workspace/attachments/63c675be-97b0-4fcc-a0cf-c1e0462e5cab/DOC-20261014-WA0008..pdf'; r=PdfReader(p); print('PAGES',len(r.pages)); [print('---PAGE',i+1,'---\n'+(page.extract_text() or '')) for i,page in enumerate(r.pages)]"

Running Command

mkdir -p "/tmp/workspace/past-tense-handbook/src" "/tmp/workspace/past-tense-handbook/output" && python -c "import reportlab; print('reportlab ready')"

Writing File

~/past-tense-handbook/src/create_handbook.py

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

OUT = '/tmp/workspace/past-tense-handbook/output/Past_Simple_and_Past_Continuous_Handbook.pdf'
PAGE_W, PAGE_H = A4
navy=HexColor('#19324D'); blue=HexColor('#2E86DE'); sky=HexColor('#EAF5FF'); green=HexColor('#25A18E'); mint=HexColor('#E7F8F2'); orange=HexColor('#F4A261'); yellow=HexColor('#FFF3BF'); pink=HexColor('#FFF0F5'); purple=HexColor('#7657B2'); red=HexColor('#D1495B'); gray=HexColor('#52616B')

styles=getSampleStyleSheet()
styles.add(ParagraphStyle(name='TitleKid', parent=styles['Title'], fontName='Helvetica-Bold', fontSize=28, leading=33, alignment=TA_CENTER, textColor=navy, spaceAfter=8))
styles.add(ParagraphStyle(name='SubKid', parent=styles['Normal'], fontName='Helvetica-Bold', fontSize=13, leading=17, alignment=TA_CENTER, textColor=purple, spaceAfter=12))
styles.add(ParagraphStyle(name='H1Kid', parent=styles['Heading1'], fontName='Helvetica-Bold', fontSize=20, leading=24, textColor=navy, spaceBefore=4, spaceAfter=8))
styles.add(ParagraphStyle(name='H2Kid', parent=styles['Heading2'], fontName='Helvetica-Bold', fontSize=14, leading=18, textColor=navy, spaceBefore=5, spaceAfter=5))
styles.add(ParagraphStyle(name='BodyKid', parent=styles['BodyText'], fontName='Helvetica', fontSize=11.2, leading=15, textColor=navy, spaceAfter=5))
styles.add(ParagraphStyle(name='BodySmall', parent=styles['BodyText'], fontName='Helvetica', fontSize=9.8, leading=12.5, textColor=navy, spaceAfter=3))
styles.add(ParagraphStyle(name='BigRule', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=14, leading=18, alignment=TA_CENTER, textColor=navy))
styles.add(ParagraphStyle(name='Mini', parent=styles['BodyText'], fontName='Helvetica-Bold', fontSize=10, leading=12, textColor=navy, alignment=TA_CENTER))

def P(txt, style='BodyKid'): return Paragraph(txt, styles[style])
def box(items, bg=sky, border=blue, widths=[17.5*cm], pad=9):
    t=Table([[x] for x in items], colWidths=widths)
    t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),bg),('BOX',(0,0),(-1,-1),1.3,border),('LEFTPADDING',(0,0),(-1,-1),pad),('RIGHTPADDING',(0,0),(-1,-1),pad),('TOPPADDING',(0,0),(-1,-1),pad),('BOTTOMPADDING',(0,0),(-1,-1),pad)]))
    return t

def two_boxes(left, right, colors_pair=(sky,mint)):
    t=Table([[left,right]], colWidths=[8.55*cm,8.55*cm])
    t.setStyle(TableStyle([('BACKGROUND',(0,0),(0,0),colors_pair[0]),('BACKGROUND',(1,0),(1,0),colors_pair[1]),('BOX',(0,0),(0,0),1.2,blue),('BOX',(1,0),(1,0),1.2,green),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),8),('RIGHTPADDING',(0,0),(-1,-1),8),('TOPPADDING',(0,0),(-1,-1),8),('BOTTOMPADDING',(0,0),(-1,-1),8)]))
    return t

def footer(canvas, doc):
    canvas.saveState()
    canvas.setStrokeColor(HexColor('#B5D9F7')); canvas.line(1.8*cm,1.25*cm,19.2*cm,1.25*cm)
    canvas.setFont('Helvetica-Bold',8.5); canvas.setFillColor(purple)
    canvas.drawString(1.8*cm,0.78*cm,'Past Tenses: Quick Exam Handbook')
    canvas.drawRightString(19.2*cm,0.78*cm,f'Grade 4 ESL  |  Page {doc.page}')
    canvas.restoreState()

story=[]
# Cover
story += [Spacer(1,1.0*cm), P('PAST TENSES', 'TitleKid'), P('Past Simple + Past Continuous', 'TitleKid'), P('A bright, easy handbook for your exam tomorrow!', 'SubKid')]
story.append(box([P('<b>Remember:</b> Both tenses talk about the past. The big question is: <b>Did the action finish, or was it happening?</b>', 'BigRule')], yellow, orange))
story += [Spacer(1,0.5*cm)]
cover_table=Table([[P('<b>PAST SIMPLE</b><br/>A finished action.<br/><br/><font size="18">I played.</font><br/><br/>Think: <b>DONE!</b>', 'Mini'),P('<b>PAST CONTINUOUS</b><br/>An action in progress.<br/><br/><font size="18">I was playing.</font><br/><br/>Think: <b>HAPPENING!</b>', 'Mini')]], colWidths=[8.55*cm,8.55*cm], rowHeights=[6*cm])
cover_table.setStyle(TableStyle([('BACKGROUND',(0,0),(0,0),sky),('BACKGROUND',(1,0),(1,0),mint),('BOX',(0,0),(0,0),2,blue),('BOX',(1,0),(1,0),2,green),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),10),('RIGHTPADDING',(0,0),(-1,-1),10)]))
story += [cover_table, Spacer(1,.55*cm), box([P('<b>Exam super tip:</b> Look for <b>was/were + -ing</b>. That is usually Past Continuous. Look for a finished verb such as <b>played, went, saw</b>. That is usually Past Simple.', 'BodyKid')], pink, red)]
story.append(PageBreak())
# page 2 past simple
story += [P('1. Past Simple = Finished!', 'H1Kid'), P('Use the <b>past simple</b> for something that started and finished in the past.', 'BodyKid')]
story.append(box([P('<b>Example:</b> I <b>played</b> football yesterday. <br/>The game is finished now.', 'BigRule')], sky, blue))
story += [Spacer(1,.18*cm),P('How do I make it?', 'H2Kid')]
data=[[P('<b>Sentence</b>','BodySmall'),P('<b>Rule</b>','BodySmall'),P('<b>Example</b>','BodySmall')], [P('Positive','BodySmall'),P('verb + <b>-ed</b> (regular verbs)<br/>or a special form (irregular verbs)','BodySmall'),P('play → <b>played</b><br/>go → <b>went</b>','BodySmall')], [P('Negative','BodySmall'),P('<b>didn\'t + base verb</b>','BodySmall'),P('I <b>didn\'t watch</b> TV.','BodySmall')], [P('Question','BodySmall'),P('<b>Did + person + base verb?</b>','BodySmall'),P('<b>Did</b> you <b>walk</b> home?','BodySmall')]]
t=Table(data,colWidths=[3*cm,7*cm,7.1*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),blue),('TEXTCOLOR',(0,0),(-1,0),colors.white),('BACKGROUND',(0,1),(-1,-1),sky),('GRID',(0,0),(-1,-1),.7,HexColor('#8BC4F7')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]));story += [t,Spacer(1,.25*cm)]
story.append(two_boxes([P('<b>Spelling helpers</b>','H2Kid'),P('• like → like<b>d</b><br/>• try → tr<b>ied</b><br/>• stop → sto<b>pped</b>','BodyKid')],[P('<b>Useful time words</b>','H2Kid'),P('<b>yesterday</b>, last night, last week, ago<br/><br/>I visited Grandma <b>last Sunday</b>.','BodyKid')],(yellow,pink)))
story += [Spacer(1,.25*cm),box([P('<b>Do not say:</b> I didn\'t <b>played</b>. <br/><b>Say:</b> I didn\'t <b>play</b>. After <b>did/didn\'t</b>, use the base verb!', 'BodyKid')], HexColor('#FFF6E5'), orange)]
story.append(PageBreak())
# past cont
story += [P('2. Past Continuous = Happening!', 'H1Kid'), P('Use the <b>past continuous</b> for an action that was in progress at a time in the past.', 'BodyKid')]
story.append(box([P('<b>Example:</b> At 8 o\'clock last night, I <b>was doing</b> my homework. <br/>The action was happening at that time.', 'BigRule')], mint, green))
story += [Spacer(1,.2*cm),P('How do I make it?', 'H2Kid')]
data2=[[P('<b>Person</b>','BodySmall'),P('<b>Positive</b>','BodySmall'),P('<b>Negative</b>','BodySmall'),P('<b>Question</b>','BodySmall')],[P('I / he / she / it','BodySmall'),P('<b>was</b> reading','BodySmall'),P('<b>wasn\'t</b> reading','BodySmall'),P('<b>Was</b> she reading?','BodySmall')],[P('you / we / they','BodySmall'),P('<b>were</b> reading','BodySmall'),P('<b>weren\'t</b> reading','BodySmall'),P('<b>Were</b> they reading?','BodySmall')]]
t2=Table(data2,colWidths=[3.2*cm,4.6*cm,4.8*cm,4.5*cm]);t2.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),green),('TEXTCOLOR',(0,0),(-1,0),colors.white),('BACKGROUND',(0,1),(-1,-1),mint),('GRID',(0,0),(-1,-1),.7,HexColor('#83D8C7')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),8),('BOTTOMPADDING',(0,0),(-1,-1),8)]));story += [t2,Spacer(1,.2*cm)]
story.append(two_boxes([P('<b>Use it for two actions happening together</b>','H2Kid'),P('I <b>was reading</b> while John <b>was watching</b> TV.','BodyKid')],[P('<b>Use it for a background scene</b>','H2Kid'),P('It <b>was raining</b>. Alex <b>was driving</b> to work.','BodyKid')],(sky,yellow)))
story += [Spacer(1,.25*cm),box([P('<b>Signal words:</b> while, when, as, all day, all night, at 7 o\'clock yesterday.<br/><br/><b>Easy clue:</b> <b>was/were + verb-ing</b> = Past Continuous.', 'BodyKid')], pink, purple)]
story.append(PageBreak())
# difference
story += [P('3. The Difference: Short and Easy', 'H1Kid'), P('Use this tiny rule in the exam:', 'BodyKid')]
story.append(two_boxes([P('<b>Past Simple</b>','H2Kid'),P('<b>Finished action</b><br/><br/>The phone <b>rang</b>.<br/><br/>It happened and finished.','BodyKid')],[P('<b>Past Continuous</b>','H2Kid'),P('<b>Action in progress</b><br/><br/>I <b>was sleeping</b>.<br/><br/>It was happening for some time.','BodyKid')],(sky,mint)))
story += [Spacer(1,.35*cm),P('When both tenses are in one sentence', 'H2Kid')]
story.append(box([P('<b>Long action happening</b> + <b>short finished action</b><br/><br/>I <font color="#16826E"><b>was sleeping</b></font> when the phone <font color="#C0392B"><b>rang</b></font>.', 'BigRule'),P('<b>was sleeping</b> = Past Continuous (the long action)<br/><b>rang</b> = Past Simple (the short action that interrupted it)', 'BodyKid')], HexColor('#F9F7FF'), purple))
story += [Spacer(1,.25*cm)]
compare=[[P('<b>Ask yourself...</b>','BodySmall'),P('<b>Choose...</b>','BodySmall')],[P('Is the action complete and finished?','BodySmall'),P('<b>Past Simple</b><br/>She cleaned her room.','BodySmall')],[P('Was the action happening at that past moment?','BodySmall'),P('<b>Past Continuous</b><br/>She was cleaning her room at 5.','BodySmall')],[P('Did a short action happen during a longer action?','BodySmall'),P('<b>Continuous + Simple</b><br/>She was cleaning when Mum arrived.','BodySmall')]]
t3=Table(compare,colWidths=[8.3*cm,8.8*cm]);t3.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),navy),('TEXTCOLOR',(0,0),(-1,0),colors.white),('BACKGROUND',(0,1),(-1,-1),HexColor('#F1F6FA')),('GRID',(0,0),(-1,-1),.7,HexColor('#A9C4D7')),('VALIGN',(0,0),(-1,-1),'MIDDLE'),('LEFTPADDING',(0,0),(-1,-1),8),('RIGHTPADDING',(0,0),(-1,-1),8),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]));story += [t3,Spacer(1,.3*cm)]
story.append(box([P('<b>Memory trick:</b> Past Simple is a <b>photo</b> - one finished moment. Past Continuous is a <b>video</b> - the action is moving!', 'BodyKid')], yellow, orange))
story.append(PageBreak())
# practice
story += [P('4. Mini Exam Practice', 'H1Kid'), P('Choose the correct verb. Write the answer, then check below.', 'BodyKid')]
qs=['1. Yesterday, Mia __________ (walk / walked) to school.','2. At 6 pm, we __________ (ate / were eating) dinner.','3. I __________ (was playing / played) outside when it started to rain.','4. They __________ (didn\'t watched / didn\'t watch) a film last night.','5. __________ you __________ (Did / go) to the park yesterday?','6. While Dad __________ (was cooking / cooked), the phone __________ (rang / was ringing).']
for q in qs: story += [box([P(q,'BodyKid')],HexColor('#F8FBFD'),HexColor('#B8D6EC'),pad=7),Spacer(1,.11*cm)]
story += [Spacer(1,.12*cm),P('Answers', 'H2Kid')]
story.append(box([P('1. <b>walked</b> &nbsp; 2. <b>were eating</b> &nbsp; 3. <b>was playing</b> &nbsp; 4. <b>didn\'t watch</b> &nbsp; 5. <b>Did, go</b> &nbsp; 6. <b>was cooking, rang</b>', 'BodyKid')], mint, green))
story += [Spacer(1,.28*cm),box([P('<b>Tonight before the exam:</b><br/>1. Learn: <b>did/didn\'t + base verb</b>.<br/>2. Learn: <b>was/were + verb-ing</b>.<br/>3. Remember: <b>long action = continuous</b>; <b>short finished action = simple</b>.','BodyKid')],yellow,orange)]

doc=SimpleDocTemplate(OUT,pagesize=A4,rightMargin=1.75*cm,leftMargin=1.75*cm,topMargin=1.55*cm,bottomMargin=1.6*cm,title='Past Simple and Past Continuous Handbook')
doc.build(story,onFirstPage=footer,onLaterPages=footer)
print(OUT)
Running Command

python "/tmp/workspace/past-tense-handbook/src/create_handbook.py" && ls -lh "/tmp/workspace/past-tense-handbook/output/Past_Simple_and_Past_Continuous_Handbook.pdf"

Running Command

python -c "from pypdf import PdfReader; p='/tmp/workspace/past-tense-handbook/output/Past_Simple_and_Past_Continuous_Handbook.pdf'; r=PdfReader(p); print('pages=',len(r.pages)); [print(i+1, len(page.extract_text() or ''), (page.extract_text() or '')[:110].replace('\\n',' | ')) for i,page in enumerate(r.pages)]"

Created a colorful 5-page Grade 4 ESL exam handbook based on the attached grammar reference. It includes:
  • Past Simple rules, forms, and examples
  • Past Continuous rules, forms, and examples
  • A short, easy comparison for the exam
  • “When” and “while” explanation
  • Mini practice questions with answers
  • Quick revision tips for tomorrow

Past Simple and Past Continuous Handbook

PDF Document · PDF

Please add Russian translation under every English sentences.

Reading File
Browsing Directory

~/

Searching the Web

English Russian past simple past continuous grammar translations

Browsing Directory

~/past-tense-handbook

Reading File
Writing File

~/past-tense-handbook/src/create_bilingual_handbook.py

from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.colors import HexColor
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, Table, TableStyle, PageBreak
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

OUT='/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf'
pdfmetrics.registerFont(TTFont('DejaVu','/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'))
pdfmetrics.registerFont(TTFont('DejaVu-Bold','/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf'))
navy=HexColor('#19324D'); blue=HexColor('#2E86DE'); sky=HexColor('#EAF5FF'); green=HexColor('#16826E'); mint=HexColor('#E7F8F2'); orange=HexColor('#F4A261'); yellow=HexColor('#FFF3BF'); pink=HexColor('#FFF0F5'); purple=HexColor('#7657B2'); red=HexColor('#C0392B')
s=getSampleStyleSheet()
s.add(ParagraphStyle(name='Title',fontName='DejaVu-Bold',fontSize=25,leading=30,alignment=TA_CENTER,textColor=navy,spaceAfter=5))
s.add(ParagraphStyle(name='Subtitle',fontName='DejaVu-Bold',fontSize=12.5,leading=16,alignment=TA_CENTER,textColor=purple,spaceAfter=10))
s.add(ParagraphStyle(name='H1',fontName='DejaVu-Bold',fontSize=18,leading=23,textColor=navy,spaceAfter=6))
s.add(ParagraphStyle(name='H2',fontName='DejaVu-Bold',fontSize=12,leading=15,textColor=navy,spaceBefore=4,spaceAfter=4))
s.add(ParagraphStyle(name='E',fontName='DejaVu',fontSize=10.3,leading=13.5,textColor=navy,spaceAfter=1))
s.add(ParagraphStyle(name='R',fontName='DejaVu',fontSize=9.1,leading=12,textColor=purple,spaceAfter=4))
s.add(ParagraphStyle(name='B',fontName='DejaVu-Bold',fontSize=12.2,leading=16,textColor=navy,alignment=TA_CENTER))
s.add(ParagraphStyle(name='Mini',fontName='DejaVu',fontSize=8.8,leading=11.4,textColor=navy,spaceAfter=1))
def p(x,k='E'): return Paragraph(x,s[k])
def bi(en,ru,style='E'): return [p(en,style),p('🇷🇺 '+ru,'R')]
def box(items,bg=sky,border=blue,pad=8):
 t=Table([[x] for x in items],colWidths=[17.3*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,-1),bg),('BOX',(0,0),(-1,-1),1.2,border),('LEFTPADDING',(0,0),(-1,-1),pad),('RIGHTPADDING',(0,0),(-1,-1),pad),('TOPPADDING',(0,0),(-1,-1),pad),('BOTTOMPADDING',(0,0),(-1,-1),pad)]));return t
def twobox(left,right,bgs=(sky,mint)):
 t=Table([[left,right]],colWidths=[8.45*cm,8.85*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(0,0),bgs[0]),('BACKGROUND',(1,0),(1,0),bgs[1]),('BOX',(0,0),(0,0),1.1,blue),('BOX',(1,0),(1,0),1.1,green),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]));return t
def foot(c,d):
 c.saveState();c.setStrokeColor(HexColor('#B5D9F7'));c.line(1.8*cm,1.2*cm,19.2*cm,1.2*cm);c.setFillColor(purple);c.setFont('DejaVu',7.7);c.drawString(1.8*cm,.75*cm,'Past Tenses Handbook | Английские прошедшие времена');c.drawRightString(19.2*cm,.75*cm,f'Grade 4 ESL | Страница {d.page}');c.restoreState()
st=[]
# 1
st += [Spacer(1,.6*cm),p('PAST TENSES','Title'),p('Past Simple + Past Continuous','Title'),p('Easy English-Russian handbook for your exam tomorrow!<br/>Простой англо-русский справочник для завтрашнего экзамена!','Subtitle')]
st.append(box(bi('<b>Remember:</b> Both tenses talk about the past. Did the action finish, or was it happening?','<b>Запомни:</b> Оба времени говорят о прошлом. Действие закончилось или происходило?','B'),yellow,orange))
st += [Spacer(1,.35*cm)]
left=[p('<b>PAST SIMPLE</b>','H2')]+bi('A finished action.','Законченное действие.')+bi('<b>I played.</b>','<b>Я играл.</b>')+bi('Think: DONE!','Думай: ГОТОВО!')
right=[p('<b>PAST CONTINUOUS</b>','H2')]+bi('An action in progress.','Действие происходило.')+bi('<b>I was playing.</b>','<b>Я играл в тот момент.</b>')+bi('Think: HAPPENING!','Думай: ПРОИСХОДИТ!')
st += [twobox(left,right),Spacer(1,.35*cm)]
st.append(box(bi('<b>Exam tip:</b> Look for <b>was/were + -ing</b>. This is usually Past Continuous. Look for a finished verb such as <b>played, went, saw</b>. This is usually Past Simple.','<b>Совет для экзамена:</b> Ищи <b>was/were + -ing</b>. Обычно это Past Continuous. Ищи законченную форму глагола: <b>played, went, saw</b>. Обычно это Past Simple.'),pink,red))
st.append(PageBreak())
# 2
st += [p('1. Past Simple = Finished!','H1')]+bi('Use Past Simple for something that started and finished in the past.','Используй Past Simple для действия, которое началось и закончилось в прошлом.')
st.append(box(bi('<b>Example:</b> I <b>played</b> football yesterday. The game is finished now.','<b>Пример:</b> Я <b>играл</b> в футбол вчера. Игра уже закончилась.','B'),sky,blue))
st += [Spacer(1,.15*cm),p('How do I make it? | Как образовать?','H2')]
data=[[p('<b>English</b>','Mini'),p('<b>Русский</b>','Mini')],[p('<b>Positive:</b> verb + <b>-ed</b> for regular verbs.<br/><b>play → played</b><br/>Some verbs are special: <b>go → went</b>.','Mini'),p('<b>Утверждение:</b> к правильному глаголу добавь <b>-ed</b>.<br/><b>play → played</b><br/>Некоторые глаголы особенные: <b>go → went</b>.','Mini')],[p('<b>Negative:</b> <b>didn\'t + base verb</b>.<br/>I <b>didn\'t watch</b> TV.','Mini'),p('<b>Отрицание:</b> <b>didn\'t + начальная форма глагола</b>.<br/>Я <b>не смотрел</b> телевизор.','Mini')],[p('<b>Question:</b> <b>Did + person + base verb?</b><br/><b>Did</b> you <b>walk</b> home?','Mini'),p('<b>Вопрос:</b> <b>Did + человек + начальная форма глагола?</b><br/><b>Ты шёл</b> домой?','Mini')]]
t=Table(data,colWidths=[8.65*cm,8.65*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),blue),('TEXTCOLOR',(0,0),(-1,0),colors.white),('BACKGROUND',(0,1),(-1,-1),sky),('GRID',(0,0),(-1,-1),.6,HexColor('#8BC4F7')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),6),('BOTTOMPADDING',(0,0),(-1,-1),6)]));st += [t,Spacer(1,.2*cm)]
st.append(twobox([p('<b>Spelling helpers</b>','H2')]+bi('like → liked; try → tried; stop → stopped.','like → liked; try → tried; stop → stopped.'),[p('<b>Time words</b>','H2')]+bi('<b>yesterday</b>, last night, last week, ago.','<b>вчера</b>, прошлой ночью, на прошлой неделе, тому назад.')+bi('I visited Grandma last Sunday.','Я навестил бабушку в прошлое воскресенье.'),(yellow,pink)))
st += [Spacer(1,.2*cm),box(bi('<b>Do not say:</b> I didn\'t <b>played</b>. <b>Say:</b> I didn\'t <b>play</b>. After <b>did/didn\'t</b>, use the base verb!','<b>Не говори:</b> I didn\'t <b>played</b>. <b>Говори:</b> I didn\'t <b>play</b>. После <b>did/didn\'t</b> используй начальную форму глагола!'),HexColor('#FFF6E5'),orange)]
st.append(PageBreak())
#3
st += [p('2. Past Continuous = Happening!','H1')]+bi('Use Past Continuous for an action that was in progress at a time in the past.','Используй Past Continuous для действия, которое происходило в определённый момент в прошлом.')
st.append(box(bi('<b>Example:</b> At 8 o\'clock last night, I <b>was doing</b> my homework. The action was happening at that time.','<b>Пример:</b> В 8 часов вчера вечером я <b>делал</b> домашнее задание. Действие происходило в тот момент.','B'),mint,green))
st += [Spacer(1,.15*cm),p('How do I make it? | Как образовать?','H2')]
data=[[p('<b>English</b>','Mini'),p('<b>Русский</b>','Mini')],[p('<b>I / he / she / it:</b> <b>was + verb-ing</b>.<br/>She <b>was reading</b>.','Mini'),p('<b>I / he / she / it:</b> <b>was + глагол-ing</b>.<br/>Она <b>читала</b>.','Mini')],[p('<b>you / we / they:</b> <b>were + verb-ing</b>.<br/>They <b>were reading</b>.','Mini'),p('<b>you / we / they:</b> <b>were + глагол-ing</b>.<br/>Они <b>читали</b>.','Mini')],[p('<b>Negative:</b> wasn\'t / weren\'t + verb-ing.<br/><b>Question:</b> Was/Were + person + verb-ing?','Mini'),p('<b>Отрицание:</b> wasn\'t / weren\'t + глагол-ing.<br/><b>Вопрос:</b> Was/Were + человек + глагол-ing?','Mini')]]
t=Table(data,colWidths=[8.65*cm,8.65*cm]);t.setStyle(TableStyle([('BACKGROUND',(0,0),(-1,0),green),('TEXTCOLOR',(0,0),(-1,0),colors.white),('BACKGROUND',(0,1),(-1,-1),mint),('GRID',(0,0),(-1,-1),.6,HexColor('#83D8C7')),('VALIGN',(0,0),(-1,-1),'TOP'),('LEFTPADDING',(0,0),(-1,-1),7),('RIGHTPADDING',(0,0),(-1,-1),7),('TOPPADDING',(0,0),(-1,-1),7),('BOTTOMPADDING',(0,0),(-1,-1),7)]));st += [t,Spacer(1,.2*cm)]
st.append(twobox([p('<b>Two actions together</b>','H2')]+bi('I <b>was reading</b> while John <b>was watching</b> TV.','Я <b>читал</b>, пока Джон <b>смотрел</b> телевизор.'),[p('<b>Background scene</b>','H2')]+bi('It <b>was raining</b>. Alex <b>was driving</b> to work.','Шёл <b>дождь</b>. Алекс <b>ехал</b> на работу.'),(sky,yellow)))
st += [Spacer(1,.2*cm),box(bi('<b>Signal words:</b> while, when, as, all day, all night, at 7 o\'clock yesterday.','<b>Слова-подсказки:</b> while, when, as, весь день, всю ночь, вчера в 7 часов.'),pink,purple)]
st.append(PageBreak())
#4 difference
st += [p('3. The Difference: Short and Easy','H1')]+bi('Use this tiny rule in the exam:','Используй это короткое правило на экзамене:')
st.append(twobox([p('<b>Past Simple</b>','H2')]+bi('<b>Finished action.</b>','<b>Законченное действие.</b>')+bi('The phone <b>rang</b>.','Телефон <b>зазвонил</b>.')+bi('It happened and finished.','Это случилось и закончилось.'),[p('<b>Past Continuous</b>','H2')]+bi('<b>Action in progress.</b>','<b>Действие происходило.</b>')+bi('I <b>was sleeping</b>.','Я <b>спал</b>.')+bi('It was happening for some time.','Это происходило некоторое время.'),(sky,mint)))
st += [Spacer(1,.25*cm),p('When both tenses are in one sentence | Когда два времени в одном предложении','H2')]
st.append(box(bi('<b>Long action happening</b> + <b>short finished action</b><br/>I <font color="#16826E"><b>was sleeping</b></font> when the phone <font color="#C0392B"><b>rang</b></font>.','<b>Длинное происходящее действие</b> + <b>короткое законченное действие</b><br/>Я <font color="#16826E"><b>спал</b></font>, когда телефон <font color="#C0392B"><b>зазвонил</b></font>.','B'),HexColor('#F9F7FF'),purple))
st += [Spacer(1,.18*cm)]
st.append(box(bi('<b>was sleeping</b> = Past Continuous: the long action.<br/><b>rang</b> = Past Simple: the short action that interrupted it.','<b>was sleeping</b> = Past Continuous: длинное действие.<br/><b>rang</b> = Past Simple: короткое действие, которое его прервало.'),sky,blue))
st += [Spacer(1,.2*cm),box(bi('<b>Memory trick:</b> Past Simple is a <b>photo</b>, one finished moment. Past Continuous is a <b>video</b>, the action is moving!','<b>Подсказка для памяти:</b> Past Simple - это <b>фото</b>, один законченный момент. Past Continuous - это <b>видео</b>, действие продолжается!'),yellow,orange)]
st.append(PageBreak())
#5 practice
st += [p('4. Mini Exam Practice','H1')]+bi('Choose the correct verb. Write the answer, then check below.','Выбери правильный глагол. Напиши ответ, потом проверь ниже.')
questions=[('1. Yesterday, Mia __________ (walk / walked) to school.','Вчера Мия __________ (идти / пошла) в школу.'),('2. At 6 pm, we __________ (ate / were eating) dinner.','В 6 вечера мы __________ (поели / ели) ужин.'),('3. I __________ (was playing / played) outside when it started to rain.','Я __________ (играл / сыграл) на улице, когда начался дождь.'),('4. They __________ (didn\'t watched / didn\'t watch) a film last night.','Они __________ (не смотрели) фильм прошлой ночью.'),('5. __________ you __________ (Did / go) to the park yesterday?','__________ ты __________ (ходил) в парк вчера?'),('6. While Dad __________ (was cooking / cooked), the phone __________ (rang / was ringing).','Пока папа __________ (готовил), телефон __________ (зазвонил).')]
for en,ru in questions:
 st += [box(bi(en,ru),HexColor('#F8FBFD'),HexColor('#B8D6EC'),6),Spacer(1,.08*cm)]
st += [Spacer(1,.1*cm),p('Answers | Ответы','H2')]
st.append(box(bi('1. <b>walked</b>  2. <b>were eating</b>  3. <b>was playing</b>  4. <b>didn\'t watch</b>  5. <b>Did, go</b>  6. <b>was cooking, rang</b>','1. <b>walked</b>  2. <b>were eating</b>  3. <b>was playing</b>  4. <b>didn\'t watch</b>  5. <b>Did, go</b>  6. <b>was cooking, rang</b>'),mint,green))
st += [Spacer(1,.2*cm),box(bi('<b>Tonight before the exam:</b> Learn <b>did/didn\'t + base verb</b>. Learn <b>was/were + verb-ing</b>. Remember: <b>long action = continuous</b>; <b>short finished action = simple</b>.','<b>Сегодня перед экзаменом:</b> Выучи <b>did/didn\'t + начальная форма глагола</b>. Выучи <b>was/were + глагол-ing</b>. Помни: <b>длинное действие = continuous</b>; <b>короткое законченное действие = simple</b>.'),yellow,orange)]
doc=SimpleDocTemplate(OUT,pagesize=A4,leftMargin=1.85*cm,rightMargin=1.85*cm,topMargin=1.45*cm,bottomMargin=1.55*cm,title='Past Tenses Handbook English Russian')
doc.build(st,onFirstPage=foot,onLaterPages=foot)
print(OUT)
Running Command

python "/tmp/workspace/past-tense-handbook/src/create_bilingual_handbook.py" && ls -lh "/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf" && python -c "from pypdf import PdfReader; p='/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf'; r=PdfReader(p); print('PAGES',len(r.pages)); [print(i+1, len(page.extract_text() or '')) for i,page in enumerate(r.pages)]"

Finding Files

**/*.[Tt][Tt][Ff] in /usr/share/fonts

Finding Files

**/*.[Tt][Tt][Ff] in /usr/local/share/fonts

Editing File

~/past-tense-handbook/src/create_bilingual_handbook.py

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

python "/tmp/workspace/past-tense-handbook/src/create_bilingual_handbook.py" && ls -lh "/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf" && python -c "from pypdf import PdfReader; p='/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf'; r=PdfReader(p); print('PAGES',len(r.pages)); [print(i+1, len(page.extract_text() or ''), (page.extract_text() or '')[:80].replace('\\n',' | ')) for i,page in enumerate(r.pages)]"

Editing File

~/past-tense-handbook/src/create_bilingual_handbook.py

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

~/past-tense-handbook/src/create_bilingual_handbook.py

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

python "/tmp/workspace/past-tense-handbook/src/create_bilingual_handbook.py" && ls -lh "/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf" && python -c "from pypdf import PdfReader; p='/tmp/workspace/past-tense-handbook/output/Past_Tenses_Handbook_English_Russian.pdf'; r=PdfReader(p); print('PAGES',len(r.pages)); [print(i+1, len(page.extract_text() or ''), (page.extract_text() or '')[:120].replace('\\n',' | ')) for i,page in enumerate(r.pages)]"

Added Russian translations directly under the English explanations, examples, rules, questions, and answers throughout the handbook.

Past Tenses Handbook English Russian

PDF Document · PDF

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