Please create a pdf based on "present continuous negative tense" structure of sentences formula,how to ask questions and answer them in negative. Overall make a very attractive colorful interesting pdf .Also add 25 logical not funny conversation questions for a 3rd grade ESL student along with answers.Show formula and format of sentence in very creative attractive way in special box.
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist"
mkdir -p /home/daytona/workspace/present-continuous-negative
~/present-continuous-negative/create_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.units import cm, mm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
from reportlab.lib.colors import HexColor
import math
# ── Color Palette ──────────────────────────────────────────────────────────────
C_BG_PURPLE = HexColor("#6C3483")
C_BG_TEAL = HexColor("#148F77")
C_BG_ORANGE = HexColor("#E67E22")
C_BG_PINK = HexColor("#E91E8C")
C_BG_BLUE = HexColor("#1565C0")
C_BG_GREEN = HexColor("#2E7D32")
C_BG_RED = HexColor("#C0392B")
C_BG_YELLOW = HexColor("#F9A825")
C_LIGHT_PURPLE = HexColor("#D7BDE2")
C_LIGHT_TEAL = HexColor("#A2D9CE")
C_LIGHT_ORANGE = HexColor("#FAD7A0")
C_LIGHT_PINK = HexColor("#F9C6E0")
C_LIGHT_BLUE = HexColor("#BBDEFB")
C_LIGHT_GREEN = HexColor("#C8E6C9")
C_LIGHT_RED = HexColor("#FFCDD2")
C_LIGHT_YELLOW = HexColor("#FFF9C4")
C_WHITE = colors.white
C_DARK = HexColor("#1A1A2E")
C_FORMULA_BG = HexColor("#FFF3E0")
C_FORMULA_BORDER= HexColor("#FF6F00")
PAGE_W, PAGE_H = A4
# ── Custom Rounded-Rectangle Box Flowable ──────────────────────────────────────
class RoundedBox(Flowable):
"""A flowable that draws a rounded-rectangle coloured box with centred text."""
def __init__(self, width, height, text_lines, bg_color, text_color=colors.white,
border_color=None, radius=12, font_name="Helvetica-Bold",
font_sizes=None, line_spacing=None):
super().__init__()
self.box_w = width
self.box_h = height
self.text_lines = text_lines # list of strings
self.bg_color = bg_color
self.text_color = text_color
self.border_color = border_color or bg_color
self.radius = radius
self.font_name = font_name
self.font_sizes = font_sizes or [14] * len(text_lines)
self.line_spacing = line_spacing or 20
self.width = width
self.height = height
def draw(self):
c = self.canv
# shadow
c.setFillColor(HexColor("#00000022"))
c.roundRect(4, -4, self.box_w, self.box_h, self.radius, fill=1, stroke=0)
# fill
c.setFillColor(self.bg_color)
c.setStrokeColor(self.border_color)
c.setLineWidth(2.5)
c.roundRect(0, 0, self.box_w, self.box_h, self.radius, fill=1, stroke=1)
# text
total_h = len(self.text_lines) * self.line_spacing
y_start = self.box_h / 2 + total_h / 2 - self.line_spacing * 0.5
for i, (line, fsize) in enumerate(zip(self.text_lines, self.font_sizes)):
c.setFillColor(self.text_color)
c.setFont(self.font_name, fsize)
c.drawCentredString(self.box_w / 2, y_start - i * self.line_spacing, line)
class StarBullet(Flowable):
"""Tiny decorative star/dot before a line."""
def __init__(self, width=10, height=10, color=C_BG_ORANGE):
super().__init__()
self.width = width
self.height = height
self.color = color
def draw(self):
c = self.canv
c.setFillColor(self.color)
c.circle(self.width / 2, self.height / 2, 4, fill=1, stroke=0)
class DecoBanner(Flowable):
"""Full-width coloured banner with title text."""
def __init__(self, text, bg, fg=colors.white, height=38, font_size=20):
super().__init__()
self.text = text
self.bg = bg
self.fg = fg
self.banner_h = height
self.font_size = font_size
self.width = PAGE_W - 4 * cm
self.height = height
def draw(self):
c = self.canv
# left tab accent
c.setFillColor(self.fg)
c.rect(0, 0, 6, self.banner_h, fill=1, stroke=0)
c.setFillColor(self.bg)
c.roundRect(4, 0, self.width, self.banner_h, 8, fill=1, stroke=0)
c.setFillColor(self.fg)
c.setFont("Helvetica-Bold", self.font_size)
c.drawString(22, self.banner_h / 2 - self.font_size / 3, self.text)
class FormulaBox(Flowable):
"""Fancy formula display box with gradient-like layered effect."""
def __init__(self, lines, colors_list, font_sizes, width=None, height=None):
super().__init__()
self.lines = lines
self.colors_list = colors_list
self.font_sizes = font_sizes
self.box_w = width or (PAGE_W - 5 * cm)
self.box_h = height or 130
self.width = self.box_w
self.height = self.box_h + 8 # shadow offset
def draw(self):
c = self.canv
w, h = self.box_w, self.box_h
# outer glow / shadow
c.setFillColor(HexColor("#FF6F0044"))
c.roundRect(5, -5, w, h, 16, fill=1, stroke=0)
# white fill
c.setFillColor(HexColor("#FFFDE7"))
c.setStrokeColor(HexColor("#FF6F00"))
c.setLineWidth(3)
c.roundRect(0, 0, w, h, 16, fill=1, stroke=1)
# top stripe
c.setFillColor(HexColor("#FF6F00"))
c.roundRect(0, h - 32, w, 32, 16, fill=1, stroke=0)
c.rect(0, h - 32, w, 16, fill=1, stroke=0)
c.setFillColor(colors.white)
c.setFont("Helvetica-Bold", 13)
c.drawCentredString(w / 2, h - 22, "✦ SENTENCE FORMULA ✦")
# content lines
total = len(self.lines)
usable_h = h - 44
row_h = usable_h / (total + 0.5)
for i, (line, col, fsize) in enumerate(zip(self.lines, self.colors_list, self.font_sizes)):
y = h - 44 - (i + 1) * row_h + row_h * 0.3
# pill background for each token
tokens = line.split(" + ")
if len(tokens) > 1:
# draw pill row
total_token_w = 0
widths = []
for t in tokens:
tw = len(t) * fsize * 0.6 + 24
widths.append(tw)
total_token_w += tw
total_token_w += (len(tokens) - 1) * 12
x_start = (w - total_token_w) / 2
xx = x_start
pill_colors = [HexColor("#6C3483"), HexColor("#C0392B"), HexColor("#1565C0"),
HexColor("#2E7D32"), HexColor("#E67E22"), HexColor("#E91E8C")]
for j, (t, tw) in enumerate(zip(tokens, widths)):
pc = pill_colors[j % len(pill_colors)]
c.setFillColor(pc)
c.roundRect(xx, y - 4, tw, fsize + 12, 8, fill=1, stroke=0)
c.setFillColor(colors.white)
c.setFont("Helvetica-Bold", fsize)
c.drawCentredString(xx + tw / 2, y + 2, t)
if j < len(tokens) - 1:
c.setFillColor(HexColor("#FF6F00"))
c.setFont("Helvetica-Bold", fsize + 2)
c.drawCentredString(xx + tw + 6, y + 2, "+")
xx += tw + 12
else:
c.setFillColor(col)
c.setFont("Helvetica-Bold", fsize)
c.drawCentredString(w / 2, y, line)
class QuestionBox(Flowable):
"""Fancy Q&A card."""
def __init__(self, q_num, question, answer, width=None):
super().__init__()
self.q_num = q_num
self.question = question
self.answer = answer
self.box_w = width or (PAGE_W - 5 * cm)
self.box_h = 62
self.width = self.box_w
self.height = self.box_h + 6
def draw(self):
c = self.canv
w, h = self.box_w, self.box_h
# alternating accent colors
accent_colors = [C_BG_PURPLE, C_BG_TEAL, C_BG_ORANGE, C_BG_PINK,
C_BG_BLUE, C_BG_GREEN, C_BG_RED, C_BG_YELLOW]
light_colors = [C_LIGHT_PURPLE, C_LIGHT_TEAL, C_LIGHT_ORANGE, C_LIGHT_PINK,
C_LIGHT_BLUE, C_LIGHT_GREEN, C_LIGHT_RED, C_LIGHT_YELLOW]
idx = (self.q_num - 1) % len(accent_colors)
accent = accent_colors[idx]
light = light_colors[idx]
# shadow
c.setFillColor(HexColor("#00000018"))
c.roundRect(3, -3, w, h, 10, fill=1, stroke=0)
# bg
c.setFillColor(light)
c.setStrokeColor(accent)
c.setLineWidth(2)
c.roundRect(0, 0, w, h, 10, fill=1, stroke=1)
# left accent bar
c.setFillColor(accent)
c.roundRect(0, 0, 36, h, 10, fill=1, stroke=0)
c.rect(26, 0, 10, h, fill=1, stroke=0)
# number badge
c.setFillColor(colors.white)
c.circle(18, h / 2, 12, fill=1, stroke=0)
c.setFillColor(accent)
c.setFont("Helvetica-Bold", 11)
c.drawCentredString(18, h / 2 - 4, str(self.q_num))
# question text
c.setFillColor(C_DARK)
c.setFont("Helvetica-Bold", 10.5)
# wrap question
max_w = w - 52
q_text = self.question
c.drawString(46, h - 18, q_text[:90] if len(q_text) > 90 else q_text)
if len(q_text) > 90:
c.drawString(46, h - 30, q_text[90:180])
# answer
c.setFillColor(accent)
c.setFont("Helvetica-Bold", 9)
c.drawString(46, 14, "Answer:")
c.setFillColor(HexColor("#1A1A2E"))
c.setFont("Helvetica", 9.5)
ans = self.answer
c.drawString(46 + 50, 14, ans[:95] if len(ans) > 95 else ans)
if len(ans) > 95:
c.drawString(46, 4, ans[95:190])
# ── Document Setup ──────────────────────────────────────────────────────────────
OUTPUT = "/home/daytona/workspace/present-continuous-negative/Present_Continuous_Negative.pdf"
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2 * cm,
leftMargin=2 * cm,
topMargin=1.5 * cm,
bottomMargin=1.5 * cm,
)
# ── Styles ──────────────────────────────────────────────────────────────────────
styles = getSampleStyleSheet()
def S(name, **kw):
return ParagraphStyle(name, **kw)
style_title = S("MyTitle",
fontName="Helvetica-Bold", fontSize=28, textColor=C_WHITE,
alignment=TA_CENTER, spaceAfter=4, leading=34)
style_subtitle = S("MySub",
fontName="Helvetica-BoldOblique", fontSize=13, textColor=HexColor("#FFF9C4"),
alignment=TA_CENTER, spaceAfter=6)
style_heading = S("MyH",
fontName="Helvetica-Bold", fontSize=15, textColor=C_WHITE,
alignment=TA_LEFT, spaceAfter=4, spaceBefore=8)
style_body = S("MyBody",
fontName="Helvetica", fontSize=11, textColor=C_DARK,
alignment=TA_LEFT, spaceAfter=5, leading=16)
style_body_center = S("MyBodyC",
fontName="Helvetica", fontSize=11, textColor=C_DARK,
alignment=TA_CENTER, spaceAfter=5, leading=16)
style_example = S("MyEx",
fontName="Helvetica-Oblique", fontSize=11, textColor=HexColor("#1A237E"),
alignment=TA_LEFT, spaceAfter=4, leading=15,
leftIndent=14)
style_bold_center = S("MyBC",
fontName="Helvetica-Bold", fontSize=12, textColor=C_DARK,
alignment=TA_CENTER, spaceAfter=4)
story = []
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 1 – Cover / Title
# ═══════════════════════════════════════════════════════════════════════════════
def cover_background(canvas, doc):
"""Draw a colourful gradient-style cover on page 1 only."""
canvas.saveState()
if doc.page == 1:
# background
canvas.setFillColor(HexColor("#1A1A2E"))
canvas.rect(0, 0, PAGE_W, PAGE_H, fill=1, stroke=0)
# top arc decoration
canvas.setFillColor(HexColor("#6C3483"))
canvas.ellipse(-60, PAGE_H - 160, PAGE_W + 60, PAGE_H + 60, fill=1, stroke=0)
# bottom arc
canvas.setFillColor(HexColor("#148F77"))
canvas.ellipse(-80, -80, PAGE_W + 80, 130, fill=1, stroke=0)
# floating circles
dots = [
(60, PAGE_H - 200, 45, HexColor("#E67E2255")),
(PAGE_W - 70, PAGE_H - 300, 60, HexColor("#E91E8C44")),
(PAGE_W - 40, 160, 50, HexColor("#F9A82555")),
(90, 200, 40, HexColor("#1565C044")),
(PAGE_W / 2 - 180, PAGE_H / 2, 30, HexColor("#FFFFFF22")),
(PAGE_W / 2 + 150, PAGE_H / 2 - 50, 25, HexColor("#FFFFFF22")),
]
for (x, y, r, col) in dots:
canvas.setFillColor(col)
canvas.circle(x, y, r, fill=1, stroke=0)
else:
# other pages – light background stripe at top & bottom
canvas.setFillColor(HexColor("#F8F9FA"))
canvas.rect(0, 0, PAGE_W, PAGE_H, fill=1, stroke=0)
canvas.setFillColor(HexColor("#6C3483"))
canvas.rect(0, PAGE_H - 8, PAGE_W, 8, fill=1, stroke=0)
canvas.setFillColor(HexColor("#148F77"))
canvas.rect(0, 0, PAGE_W, 8, fill=1, stroke=0)
# page number
canvas.setFillColor(HexColor("#6C3483"))
canvas.setFont("Helvetica-Bold", 9)
canvas.drawCentredString(PAGE_W / 2, 14, f"Present Continuous — Negative • Page {doc.page}")
canvas.restoreState()
# -- Cover content --
story.append(Spacer(1, 3.5 * cm))
story.append(Paragraph("🌟 PRESENT CONTINUOUS", style_title))
story.append(Paragraph("NEGATIVE TENSE", style_title))
story.append(Spacer(1, 0.3 * cm))
story.append(Paragraph("A Fun & Colourful ESL Guide • Grade 3", style_subtitle))
story.append(Spacer(1, 1 * cm))
# big decorative tagline box
story.append(
RoundedBox(
width=PAGE_W - 4 * cm,
height=64,
text_lines=["\"I am NOT sleeping. She is NOT flying.\"", "Master negative sentences today!"],
bg_color=HexColor("#E67E22"),
text_color=colors.white,
border_color=HexColor("#F9A825"),
radius=18,
font_sizes=[15, 12],
line_spacing=26,
)
)
story.append(Spacer(1, 0.8 * cm))
# quick intro bullets
intro_data = [
["📌 What is the formula?", "📖 Examples & Practice"],
["❓ How to ask questions?", "💬 25 Conversation Q&A"],
["🚫 How to answer negatively?", "⭐ Tips & Tricks"],
]
t = Table(intro_data, colWidths=[(PAGE_W - 4 * cm) / 2] * 2, rowHeights=26)
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, -1), HexColor("#FFFFFF22")),
("FONTNAME", (0, 0), (-1, -1), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, -1), 11),
("TEXTCOLOR", (0, 0), (-1, -1), colors.white),
("ALIGN", (0, 0), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("ROWBACKGROUNDS", (0, 0), (-1, -1),
[HexColor("#FFFFFF11"), HexColor("#FFFFFF22")]),
("ROUNDEDCORNERS", (0, 0), (-1, -1), [6, 6, 6, 6]),
]))
story.append(t)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 2 – What Is the Present Continuous Negative?
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("📘 What Is the Present Continuous Negative?", C_BG_PURPLE, height=40, font_size=16))
story.append(Spacer(1, 0.4 * cm))
story.append(Paragraph(
"We use the <b>Present Continuous Negative</b> to say that something is <b>NOT happening right now</b>. "
"We put <b>NOT</b> after the verb <i>to be</i> (am / is / are) to make a sentence negative.",
style_body))
story.append(Spacer(1, 0.3 * cm))
# ── FORMULA BOX ──────────────────────────────────────────────────────────────
story.append(
FormulaBox(
lines=[
"Subject + am/is/are + NOT + Verb(-ing) + Object/Rest",
"Contraction: am not → 'm not | is not → isn't | are not → aren't",
],
colors_list=[C_BG_ORANGE, C_BG_TEAL],
font_sizes=[12, 10],
width=PAGE_W - 4 * cm,
height=145,
)
)
story.append(Spacer(1, 0.5 * cm))
# ── Quick Reference Table ─────────────────────────────────────────────────────
story.append(DecoBanner("🔑 Quick Reference: am / is / are + NOT", C_BG_TEAL, height=34, font_size=14))
story.append(Spacer(1, 0.3 * cm))
ref_data = [
["Subject", "Verb to Be", "+ NOT", "Contraction", "Example"],
["I", "am", "am not", "I'm not", "I'm not reading."],
["He / She / It", "is", "is not", "isn't", "She isn't dancing."],
["You / We / They", "are", "are not", "aren't", "They aren't playing."],
]
col_w = (PAGE_W - 4 * cm) / 5
ref_t = Table(ref_data, colWidths=[col_w] * 5, rowHeights=[22, 22, 22, 22])
ref_t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), C_BG_PURPLE),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 10),
("BACKGROUND", (0, 1), (-1, -1), HexColor("#F3E5F5")),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [HexColor("#F3E5F5"), HexColor("#EDE7F6")]),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 9.5),
("TEXTCOLOR", (0, 1), (-1, -1), C_DARK),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#9C27B0")),
("ROUNDEDCORNERS", (0, 0), (-1, -1), [4, 4, 4, 4]),
]))
story.append(ref_t)
story.append(Spacer(1, 0.5 * cm))
# ── Contraction box ──────────────────────────────────────────────────────────
cont_box = RoundedBox(
width=PAGE_W - 4 * cm,
height=54,
text_lines=[
"💡 TIP: Use contractions when speaking or writing informally!",
"\"isn't\" and \"aren't\" sound more natural in everyday English.",
],
bg_color=HexColor("#E91E8C"),
text_color=colors.white,
border_color=HexColor("#AD1457"),
radius=12,
font_sizes=[12, 10],
line_spacing=22,
)
story.append(cont_box)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 3 – Sentence Structure + Examples
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("✏️ Sentence Structure & Examples", C_BG_ORANGE, height=38, font_size=15))
story.append(Spacer(1, 0.4 * cm))
# Three sub-formula boxes side by side
sub_w = (PAGE_W - 5 * cm) / 3 - 4
def mini_formula(subject, verb_be, example_short, bg, light):
data = [
[Paragraph(f"<b>{subject}</b>", ParagraphStyle("mf", fontName="Helvetica-Bold", fontSize=10.5, textColor=colors.white, alignment=TA_CENTER))],
[Paragraph(f"<b>{verb_be} + NOT</b>", ParagraphStyle("mf2", fontName="Helvetica-Bold", fontSize=10, textColor=colors.white, alignment=TA_CENTER))],
[Paragraph(f"<i>{example_short}</i>", ParagraphStyle("mf3", fontName="Helvetica-Oblique", fontSize=9, textColor=C_DARK, alignment=TA_CENTER))],
]
t = Table(data, colWidths=[sub_w])
t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 1), bg),
("BACKGROUND", (0, 2), (-1, 2), light),
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("ROWHEIGHTS", (0, 0), (-1, -1), [24, 24, 28]),
("TOPPADDING", (0, 0), (-1, -1), 4),
("BOTTOMPADDING",(0, 0), (-1, -1), 4),
("BOX", (0, 0), (-1, -1), 2, bg),
("ROUNDEDCORNERS", (0, 0), (-1, -1), [8, 8, 8, 8]),
]))
return t
mini_row = Table(
[[mini_formula("I", "am", "I'm not eating pizza.", C_BG_PURPLE, C_LIGHT_PURPLE),
mini_formula("He / She / It", "is", "He isn't watching TV.", C_BG_TEAL, C_LIGHT_TEAL),
mini_formula("You / We / They", "are", "They aren't playing.", C_BG_ORANGE, C_LIGHT_ORANGE)]],
colWidths=[sub_w + 8] * 3,
rowHeights=[90],
)
mini_row.setStyle(TableStyle([
("ALIGN", (0, 0), (-1, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 4),
("RIGHTPADDING", (0, 0), (-1, -1), 4),
]))
story.append(mini_row)
story.append(Spacer(1, 0.5 * cm))
# ── Examples Table ────────────────────────────────────────────────────────────
story.append(DecoBanner("🌈 More Examples", C_BG_GREEN, height=34, font_size=13))
story.append(Spacer(1, 0.25 * cm))
ex_data = [
["#", "Positive Form", "➜", "Negative Form"],
["1", "I am eating lunch.", "➜", "I am not eating lunch."],
["2", "She is drawing a picture.", "➜", "She isn't drawing a picture."],
["3", "They are running fast.", "➜", "They aren't running fast."],
["4", "He is riding a bike.", "➜", "He is not riding a bike."],
["5", "We are watching a movie.", "➜", "We aren't watching a movie."],
["6", "The dog is barking.", "➜", "The dog isn't barking."],
["7", "You are writing a story.", "➜", "You are not writing a story."],
["8", "The birds are singing.", "➜", "The birds aren't singing."],
]
ex_cw = [(PAGE_W - 4 * cm) * x for x in [0.06, 0.34, 0.07, 0.53]]
ex_t = Table(ex_data, colWidths=ex_cw, rowHeights=20)
ex_t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), C_BG_GREEN),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 10),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [HexColor("#E8F5E9"), HexColor("#C8E6C9")]),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 9.5),
("TEXTCOLOR", (0, 1), (-1, -1), C_DARK),
("TEXTCOLOR", (2, 1), (2, -1), C_BG_GREEN),
("FONTNAME", (2, 1), (2, -1), "Helvetica-Bold"),
("ALIGN", (0, 0), (0, -1), "CENTER"),
("ALIGN", (2, 0), (2, -1), "CENTER"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 6),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#81C784")),
]))
story.append(ex_t)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 4 – Asking & Answering Questions (Negative)
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("❓ How to Ask Questions in Present Continuous", C_BG_BLUE, height=38, font_size=14))
story.append(Spacer(1, 0.35 * cm))
story.append(Paragraph(
"To make a <b>Yes/No question</b>, move <b>am / is / are</b> to the FRONT of the sentence.",
style_body))
# Question Formula Box
story.append(
FormulaBox(
lines=[
"Am/Is/Are + Subject + NOT + Verb(-ing) + Object?",
'Example: "Is she NOT coming to school?" / "Aren\'t they playing outside?"',
],
colors_list=[C_BG_BLUE, C_BG_TEAL],
font_sizes=[12, 10],
width=PAGE_W - 4 * cm,
height=130,
)
)
story.append(Spacer(1, 0.35 * cm))
story.append(DecoBanner("✅ Answering Negative Questions", C_BG_RED, height=34, font_size=13))
story.append(Spacer(1, 0.25 * cm))
story.append(Paragraph(
"When someone asks a negative question, you can answer with <b>Yes</b> or <b>No</b>. "
"Pay attention: a <b>Yes</b> answer confirms the action IS happening; "
"a <b>No</b> answer confirms it is NOT.",
style_body))
story.append(Spacer(1, 0.2 * cm))
ans_data = [
["Question", "YES answer", "NO answer"],
["Isn't he sleeping?",
"Yes, he is sleeping.",
"No, he isn't sleeping."],
["Aren't they eating?",
"Yes, they are eating.",
"No, they aren't eating."],
["Am I not singing?",
"Yes, you are singing.",
"No, you are not singing."],
["Isn't the cat running?",
"Yes, it is running.",
"No, it isn't running."],
["Aren't we studying?",
"Yes, we are studying.",
"No, we aren't studying."],
]
ans_cw = [(PAGE_W - 4 * cm) / 3] * 3
ans_t = Table(ans_data, colWidths=ans_cw, rowHeights=[22, 22, 22, 22, 22, 22])
ans_t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), C_BG_RED),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 10),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [HexColor("#FFEBEE"), HexColor("#FFCDD2")]),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 9),
("TEXTCOLOR", (0, 1), (-1, -1), C_DARK),
("ALIGN", (0, 0), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#EF9A9A")),
# colour yes column
("BACKGROUND", (1, 1), (1, -1), HexColor("#E8F5E9")),
("BACKGROUND", (2, 1), (2, -1), HexColor("#FFEBEE")),
]))
story.append(ans_t)
story.append(Spacer(1, 0.4 * cm))
# Tip box
story.append(
RoundedBox(
width=PAGE_W - 4 * cm,
height=52,
text_lines=[
"⚡ REMEMBER: When answering, ALWAYS use the short form in the YES/NO part.",
" Yes, he IS. / No, she ISN'T. — Never say: Yes, he is not.",
],
bg_color=C_BG_YELLOW,
text_color=C_DARK,
border_color=HexColor("#F57F17"),
radius=12,
font_sizes=[11, 10],
line_spacing=22,
)
)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 5 – WH-Questions (Negative) + Pattern Box
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("🔍 WH-Questions in Present Continuous Negative", C_BG_PINK, height=38, font_size=14))
story.append(Spacer(1, 0.35 * cm))
story.append(Paragraph(
"You can also use question words like <b>What, Where, Who, Why, How</b> to ask negative questions.",
style_body))
story.append(
FormulaBox(
lines=[
"WH-word + am/is/are + Subject + NOT + Verb(-ing)?",
'Example: "Why aren\'t you eating?" / "What isn\'t she doing?"',
],
colors_list=[C_BG_PINK, HexColor("#AD1457")],
font_sizes=[12, 10],
width=PAGE_W - 4 * cm,
height=128,
)
)
story.append(Spacer(1, 0.4 * cm))
wh_data = [
["WH-word", "Example Question", "Example Answer"],
["What", "What isn't she drawing?", "She isn't drawing a cat."],
["Where", "Where aren't they going?", "They aren't going to the park."],
["Why", "Why isn't he eating?", "Because he isn't hungry."],
["Who", "Who isn't listening?", "Tom isn't listening."],
["How", "How isn't she helping?", "She isn't helping at all."],
]
wh_cw = [(PAGE_W - 4 * cm) * x for x in [0.15, 0.45, 0.40]]
wh_t = Table(wh_data, colWidths=wh_cw, rowHeights=22)
wh_t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), C_BG_PINK),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 10),
("ROWBACKGROUNDS", (0, 1), (-1, -1), [HexColor("#FCE4EC"), HexColor("#F8BBD0")]),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 9.5),
("TEXTCOLOR", (0, 1), (-1, -1), C_DARK),
("ALIGN", (0, 0), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#F48FB1")),
]))
story.append(wh_t)
story.append(Spacer(1, 0.4 * cm))
# Common mistakes box
story.append(DecoBanner("⚠️ Common Mistakes to Avoid", C_BG_ORANGE, height=34, font_size=13))
story.append(Spacer(1, 0.25 * cm))
mistakes = [
["❌ Wrong", "✅ Correct"],
["I am not eat breakfast.", "I am not eating breakfast."],
["She not is playing.", "She is not playing."],
["They are not play.", "They are not playing."],
["He isn't goes to school.", "He isn't going to school."],
["Are not you listening?", "Aren't you listening?"],
]
mis_cw = [(PAGE_W - 4 * cm) / 2] * 2
mis_t = Table(mistakes, colWidths=mis_cw, rowHeights=22)
mis_t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), C_BG_ORANGE),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 10),
("BACKGROUND", (0, 1), (0, -1), HexColor("#FFEBEE")),
("BACKGROUND", (1, 1), (1, -1), HexColor("#E8F5E9")),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 9.5),
("TEXTCOLOR", (0, 1), (0, -1), C_BG_RED),
("TEXTCOLOR", (1, 1), (1, -1), C_BG_GREEN),
("ALIGN", (0, 0), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 10),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#FFCC80")),
]))
story.append(mis_t)
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGES 6-7 – 25 Conversation Questions & Answers
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("💬 25 Conversation Questions & Answers (Grade 3 ESL)", C_BG_PURPLE, height=40, font_size=15))
story.append(Spacer(1, 0.15 * cm))
story.append(Paragraph(
"These questions use the <b>Present Continuous Negative</b>. Read, think, and answer!",
style_body))
story.append(Spacer(1, 0.2 * cm))
qa_list = [
("Are you not sitting at your desk right now?",
"No, I am not sitting at my desk right now. / Yes, I am sitting at my desk right now."),
("Why isn't the sun shining today?",
"The sun isn't shining because there are clouds in the sky."),
("Aren't birds flying in winter in very cold places?",
"No, some birds aren't flying in winter — they stay in warm places."),
("Is your teacher not writing on the board right now?",
"No, my teacher isn't writing on the board right now."),
("Why aren't fish walking on land?",
"Fish aren't walking on land because they live in water and have fins, not legs."),
("Aren't you eating lunch at this moment?",
"No, I am not eating lunch at this moment. I am studying."),
("Is the moon not shining during the day?",
"The moon isn't shining brightly during the day because the sun is too bright."),
("Why isn't ice cream staying solid in hot weather?",
"Ice cream isn't staying solid in hot weather because heat melts it."),
("Aren't plants growing without water?",
"No, plants aren't growing without water. They need water to survive."),
("Is your dog not sleeping right now?",
"No, my dog isn't sleeping right now. It is playing in the yard."),
("Why aren't we going to school on Saturdays?",
"We aren't going to school on Saturdays because it is the weekend."),
("Isn't the clock moving when there are no batteries?",
"No, the clock isn't moving because it has no batteries to give it energy."),
("Aren't you watching TV right now?",
"No, I am not watching TV right now. I am reading a book."),
("Why isn't a baby walking when it is only two months old?",
"A baby isn't walking at two months old because its legs are not strong enough yet."),
("Is your friend not coming to school today?",
"No, my friend isn't coming to school today. She is sick."),
("Aren't the students playing inside the classroom?",
"No, the students aren't playing inside. They are playing in the garden."),
("Why isn't it raining right now?",
"It isn't raining right now because the sky is clear and there are no clouds."),
("Isn't a cat flying in the sky?",
"No, a cat isn't flying in the sky. Cats don't have wings."),
("Aren't you feeling cold in summer?",
"No, I am not feeling cold in summer. Summer is warm and sunny."),
("Why isn't your pencil writing by itself?",
"My pencil isn't writing by itself because it is an object — a person must hold it."),
("Is the snow not melting in winter?",
"No, the snow isn't melting in winter because the temperature is too cold."),
("Aren't you using a phone right now?",
"No, I am not using a phone right now. I am doing my homework."),
("Why isn't the fish swimming on land?",
"The fish isn't swimming on land because it needs water to breathe and move."),
("Isn't your mom cooking breakfast at night?",
"No, my mom isn't cooking breakfast at night. She cooks breakfast in the morning."),
("Aren't you dreaming when you are awake?",
"No, I am not dreaming right now. I am awake and thinking clearly."),
]
for i, (q, a) in enumerate(qa_list, 1):
story.append(QuestionBox(i, q, a, width=PAGE_W - 4 * cm))
story.append(Spacer(1, 0.22 * cm))
if i == 13:
story.append(PageBreak())
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("💬 25 Conversation Questions (continued)", C_BG_BLUE, height=34, font_size=13))
story.append(Spacer(1, 0.2 * cm))
story.append(PageBreak())
# ═══════════════════════════════════════════════════════════════════════════════
# PAGE 8 – Summary Cheat Sheet
# ═══════════════════════════════════════════════════════════════════════════════
story.append(Spacer(1, 0.3 * cm))
story.append(DecoBanner("⭐ Summary Cheat Sheet", C_BG_YELLOW, fg=C_DARK, height=40, font_size=16))
story.append(Spacer(1, 0.4 * cm))
cheat_data = [
["Type", "Formula", "Example"],
["Negative\nStatement",
"Subject + am/is/are + NOT + Verb-ing",
"She isn't singing."],
["Yes/No\nQuestion",
"Am/Is/Are + Subject + NOT + Verb-ing?",
"Isn't he running?"],
["WH-\nQuestion",
"WH-word + am/is/are + Subject + NOT + Verb-ing?",
"Why aren't they eating?"],
["Short\nAnswer (Yes)",
"Yes, + Subject + am/is/are.",
"Yes, she is."],
["Short\nAnswer (No)",
"No, + Subject + am/is/are + not.",
"No, she isn't."],
]
cheat_cw = [(PAGE_W - 4 * cm) * x for x in [0.18, 0.48, 0.34]]
cheat_t = Table(cheat_data, colWidths=cheat_cw, rowHeights=[22, 32, 32, 32, 32, 32])
cheat_t.setStyle(TableStyle([
("BACKGROUND", (0, 0), (-1, 0), HexColor("#F57F17")),
("TEXTCOLOR", (0, 0), (-1, 0), colors.white),
("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"),
("FONTSIZE", (0, 0), (-1, 0), 10.5),
("ROWBACKGROUNDS", (0, 1), (-1, -1),
[HexColor("#FFF9C4"), HexColor("#FFFDE7"), HexColor("#FFF9C4"),
HexColor("#FFFDE7"), HexColor("#FFF9C4")]),
("FONTNAME", (0, 1), (-1, -1), "Helvetica"),
("FONTSIZE", (0, 1), (-1, -1), 9.5),
("TEXTCOLOR", (0, 1), (-1, -1), C_DARK),
("ALIGN", (0, 0), (-1, -1), "LEFT"),
("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
("LEFTPADDING", (0, 0), (-1, -1), 8),
("GRID", (0, 0), (-1, -1), 0.5, HexColor("#FFB300")),
("FONTNAME", (0, 1), (0, -1), "Helvetica-Bold"),
("TEXTCOLOR", (0, 1), (0, -1), HexColor("#E65100")),
("FONTNAME", (1, 1), (1, -1), "Helvetica-Bold"),
("TEXTCOLOR", (1, 1), (1, -1), C_BG_BLUE),
]))
story.append(cheat_t)
story.append(Spacer(1, 0.5 * cm))
story.append(
RoundedBox(
width=PAGE_W - 4 * cm,
height=56,
text_lines=[
"🌟 Great job learning Present Continuous Negative!",
"Practice every day and you will be a grammar superstar! 🚀",
],
bg_color=HexColor("#6C3483"),
text_color=colors.white,
border_color=HexColor("#9B59B6"),
radius=16,
font_sizes=[13, 11],
line_spacing=24,
)
)
story.append(Spacer(1, 0.4 * cm))
# Mini practice box
story.append(DecoBanner("📝 Quick Practice — Fill in the Blank!", C_BG_TEAL, height=34, font_size=13))
story.append(Spacer(1, 0.3 * cm))
practice = [
"1. The cat ________ (not / sleep) right now. → The cat isn't sleeping right now.",
"2. We ________ (not / eat) dinner yet. → We aren't eating dinner yet.",
"3. ________ she ________ (not / play) tennis? → Isn't she playing tennis?",
"4. Why ________ he ________ (not / come)? → Why isn't he coming?",
"5. I ________ (not / watch) TV at the moment. → I am not watching TV at the moment.",
]
for p in practice:
story.append(Paragraph(f"• {p}", style_example))
story.append(Spacer(1, 0.5 * cm))
story.append(HRFlowable(width="100%", thickness=2, color=C_BG_PURPLE))
story.append(Spacer(1, 0.2 * cm))
story.append(Paragraph("© 2026 Present Continuous Negative • ESL Grade 3 Resource", style_body_center))
# ── Build ──────────────────────────────────────────────────────────────────────
doc.build(story, onFirstPage=cover_background, onLaterPages=cover_background)
print("PDF created:", OUTPUT)
cd /home/daytona/workspace/present-continuous-negative && python create_pdf.py 2>&1
ls -lh /home/daytona/workspace/present-continuous-negative/Present_Continuous_Negative.pdf
Present Continuous Negative
PDF Document · PDF
I am unable to download the pdf , please make it available for me.
ls -lh /home/daytona/workspace/present-continuous-negative/ && file /home/daytona/workspace/present-continuous-negative/Present_Continuous_Negative.pdf
cp /home/daytona/workspace/present-continuous-negative/Present_Continuous_Negative.pdf /home/daytona/workspace/Present_Continuous_Negative.pdf && chmod 777 /home/daytona/workspace/Present_Continuous_Negative.pdf && ls -lh /home/daytona/workspace/Present_Continuous_Negative.pdf
ls -lh /home/daytona/workspace/Present_Continuous_Negative.pdf
base64 /home/daytona/workspace/Present_Continuous_Negative.pdf | wc -c
cp /home/daytona/workspace/Present_Continuous_Negative.pdf /home/daytona/workspace/PCN_Tense_Guide.pdf && ls -lh /home/daytona/workspace/PCN_Tense_Guide.pdf
PCN Tense Guide
PDF Document · PDF
It's showing error to download the file.I can't see anything there.I am disappointed and very sad now.
A colorful educational ESL poster page 1 - Cover page titled "PRESENT CONTINUOUS NEGATIVE TENSE" in large bold white letters on a deep purple and teal gradient background with decorative stars and circles. Subtitle says "A Fun & Colorful ESL Guide • Grade 3". Below the title a bright orange rounded box with white text saying 'I am NOT sleeping. She is NOT flying. Master negative sentences today!' Bottom section has a dark navy table listing 6 topics: What is the formula?, How to ask questions?, How to answer negatively?, Examples and Practice, 25 Conversation Q&A, Tips and Tricks. Very vibrant, kid-friendly, professional design.
A colorful educational ESL grammar chart page 2 for Grade 3 students about Present Continuous Negative Tense. At the top a purple banner heading "What Is the Present Continuous Negative?" White background page. Below it a large fancy bordered box labeled "SENTENCE FORMULA" with colored pill-shaped buttons showing: purple pill "Subject" + red pill "am/is/are" + blue pill "NOT" + green pill "Verb-ing" + orange pill "Object/Rest". Below that a teal banner "Quick Reference: am/is/are + NOT" with a colorful table showing: I am not / I'm not / I'm not reading. He/She/It is not / isn't / She isn't dancing. You/We/They are not / aren't / They aren't playing. At the bottom a pink rounded box tip saying "Use contractions when speaking informally! isn't and aren't sound more natural." Very bright, attractive, clean layout.
A colorful ESL grammar educational page 3 for Grade 3 about Present Continuous Negative sentence structure. White background. Orange banner at top: "Sentence Structure and Examples". Three side-by-side colored cards: purple card for "I" showing "am NOT" with example "I'm not eating pizza.", teal card for "He/She/It" showing "is NOT" with example "He isn't watching TV.", orange card for "You/We/They" showing "are NOT" with example "They aren't playing." Below a green banner "More Examples" then a striped green table with 8 rows showing positive to negative transformations: "I am eating lunch → I am not eating lunch", "She is drawing → She isn't drawing", "They are running → They aren't running", "He is riding a bike → He is not riding a bike", "We are watching a movie → We aren't watching a movie", "The dog is barking → The dog isn't barking", "You are writing → You are not writing", "The birds are singing → The birds aren't singing". Very colorful and clean.
A colorful ESL grammar educational page 4 for Grade 3 about asking and answering Present Continuous Negative questions. White background. Blue banner at top: "How to Ask Questions in Present Continuous". Large fancy formula box with orange border showing: colored pills "Am/Is/Are" + "Subject" + "NOT" + "Verb-ing" + "?" with example "Is she NOT coming to school? / Aren't they playing outside?" Below a red banner "Answering Negative Questions" with explanation text. Then a colorful 3-column table with columns: Question, YES answer (green), NO answer (red). Rows: "Isn't he sleeping? / Yes, he is sleeping. / No, he isn't sleeping." and 4 more similar rows. At the bottom a bright yellow rounded tip box saying "REMEMBER: When answering, always use the short form: Yes, he IS. / No, she ISN'T." Very attractive and educational.
A colorful ESL grammar educational page 5 for Grade 3 about WH-Questions in Present Continuous Negative. White background. Pink banner at top: "WH-Questions in Present Continuous Negative". Large formula box with pink border: colored pills "WH-word" + "am/is/are" + "Subject" + "NOT" + "Verb-ing?" with example "Why aren't you eating? / What isn't she doing?" Below a pink striped table with 5 rows and 3 columns (WH-word, Example Question, Example Answer): What/Why aren't you eating/Because he isn't hungry, Where/Why/Who/How rows. Below that an orange banner "Common Mistakes to Avoid" with a 2-column table: red left column showing WRONG sentences, green right column showing CORRECT sentences. Wrong: "I am not eat breakfast / She not is playing / They are not play / He isn't goes to school". Correct fixes shown in green. Very attractive with clear contrast colors.
A colorful ESL educational page showing 25 conversation question and answer cards for Grade 3 students about Present Continuous Negative tense. White background. Purple banner at top: "25 Conversation Questions and Answers - Grade 3 ESL". Below it 13 colorful numbered Q&A cards, each card has a colored left badge with number, light colored background, question in bold dark text, and answer in smaller text below. Cards cycle through purple, teal, orange, pink, blue, green, red, yellow colors. Questions include: "Are you not sitting at your desk right now?", "Why isn't the sun shining today?", "Aren't birds flying in winter?", "Is your teacher not writing on the board?", "Why aren't fish walking on land?", "Aren't you eating lunch?", "Is the moon not shining during the day?", "Why isn't ice cream staying solid in hot weather?", "Aren't plants growing without water?", "Is your dog not sleeping right now?", "Why aren't we going to school on Saturdays?", "Isn't the clock moving without batteries?", "Aren't you watching TV right now?". Each card shows a short logical answer. Very colorful and neat.
A colorful ESL educational page showing conversation question and answer cards 14 to 25 for Grade 3 students about Present Continuous Negative tense. Blue banner at top: "25 Conversation Questions (continued)". White background. 12 colorful numbered Q&A cards numbered 14 to 25, each card has a colored left badge with number, light colored background, bold question text, answer below. Colors cycle blue, green, red, yellow, purple, teal. Questions include: "Why isn't a baby walking at two months old?", "Is your friend not coming to school today?", "Aren't the students playing inside?", "Why isn't it raining right now?", "Isn't a cat flying in the sky?", "Aren't you feeling cold in summer?", "Why isn't your pencil writing by itself?", "Is the snow not melting in winter?", "Aren't you using a phone right now?", "Why isn't the fish swimming on land?", "Isn't your mom cooking breakfast at night?", "Aren't you dreaming when you are awake?". Each card has a logical answer matching the question. Colorful, neat, educational layout.
A colorful ESL grammar summary cheat sheet page for Grade 3 about Present Continuous Negative tense. White background. Bright yellow banner at top: "Summary Cheat Sheet". A large colorful table with 3 columns (Type, Formula, Example) and 5 rows: 1) Negative Statement - Subject + am/is/are + NOT + Verb-ing - She isn't singing. 2) Yes/No Question - Am/Is/Are + Subject + NOT + Verb-ing? - Isn't he running? 3) WH-Question - WH-word + am/is/are + Subject + NOT + Verb-ing? - Why aren't they eating? 4) Short Answer Yes - Yes + Subject + am/is/are - Yes, she is. 5) Short Answer No - No + Subject + am/is/are + not - No, she isn't. Below it a large purple motivational rounded box: "Great job learning Present Continuous Negative! Practice every day and you will be a grammar superstar!" Below that a teal banner "Quick Practice - Fill in the Blank!" with 5 fill-in exercises with answers. Very colorful, celebratory, end-of-guide feel.


| Page | Content |
|---|---|
| 🟣 Page 1 | Colorful Cover Page |
| 🔵 Page 2 | Formula Box + Quick Reference Table |
| 🟠 Page 3 | Sentence Structure + 8 Examples |
| 🔴 Page 4 | Asking & Answering Questions |
| 🩷 Page 5 | WH-Questions + Common Mistakes |
| 🟢 Page 6 | Conversation Q&A Cards 1-13 |
| 🔵 Page 7 | Conversation Q&A Cards 14-25 |
| 🌟 Page 8 | Summary Cheat Sheet + Practice |
The 25 conversation questions mentioned above aren't very great . please make conversation questions along with answers in this fashion mentioned below.