diff --git a/kjvstudy_org/server.py b/kjvstudy_org/server.py index c6866c5..25fac55 100644 --- a/kjvstudy_org/server.py +++ b/kjvstudy_org/server.py @@ -2226,11 +2226,37 @@ async def chapter_pdf(request: Request, book: str, chapter: int): detail=f"Chapter {chapter} of {book} was not found. This book has {len(chapters)} chapters." ) + # Generate commentaries with cross-references and word studies for PDF + commentaries = {} + shown_words = set() + for verse in verses: + commentary = generate_commentary(book, chapter, verse) + # Add word study sidenotes (avoiding repetition within chapter) + word_studies = generate_word_study_sidenotes(verse.text, book, chapter, verse.verse, shown_words) + commentary['word_studies'] = word_studies + for study in word_studies: + shown_words.add(study['word'].lower()) + + # Add cross-references grouped by description + from collections import defaultdict + cross_refs = get_cross_references(book, chapter, verse.verse) + grouped_refs = defaultdict(list) + for ref in cross_refs: + description = ref['note'] if ref['note'] else 'Related' + grouped_refs[description].append(ref['ref']) + + commentary['cross_reference_groups'] = [ + {'description': desc, 'refs': refs} + for desc, refs in grouped_refs.items() + ] + commentaries[verse.verse] = commentary + html_content = templates.get_template("chapter_pdf.html").render( book=book, chapter=chapter, verses=verses, verse_count=len(verses), + commentaries=commentaries, ) pdf_buffer = await render_html_to_pdf_async(html_content) diff --git a/kjvstudy_org/templates/chapter_pdf.html b/kjvstudy_org/templates/chapter_pdf.html index a2b6db9..a1f1988 100644 --- a/kjvstudy_org/templates/chapter_pdf.html +++ b/kjvstudy_org/templates/chapter_pdf.html @@ -13,6 +13,11 @@ font-size: 10pt; color: #666; } + @footnote { + border-top: 0.5pt solid #666; + padding-top: 6pt; + margin-top: 12pt; + } } body { @@ -66,6 +71,31 @@ text-align: justify; } + /* Footnote markers and content */ + .footnote { + float: footnote; + font-size: 9pt; + line-height: 1.4; + } + + .footnote-marker { + vertical-align: super; + font-size: 8pt; + color: #666; + } + + ::footnote-marker { + font-size: 8pt; + color: #666; + } + + ::footnote-call { + content: counter(footnote); + font-size: 8pt; + vertical-align: super; + color: #666; + } + .footer { margin-top: 0.4in; font-size: 9pt; @@ -77,13 +107,16 @@

{{ book }} {{ chapter }}

Authorized King James Version (KJV)

-

{{ verse_count }} verses · Suitable for study, teaching, or printing.

+

{{ verse_count }} verses · Cross-references and word studies included as footnotes.

{% for verse in verses %} + {% set commentary = commentaries[verse.verse] if commentaries and verse.verse in commentaries else none %}
{{ verse.verse }} - {{ verse.text }} + + {{ verse.text }}{% if commentary %}{% if commentary.cross_reference_groups %}*{% for group in commentary.cross_reference_groups %}{{ group.description }}: {% for ref in group.refs %}{{ ref }}{% if not loop.last %}; {% endif %}{% endfor %}.{% endfor %}{% endif %}{% if commentary.word_studies %}{% for study in commentary.word_studies %}{{ study.word }}: {{ study.term }} ({{ study.translit }}) — {{ study.meaning }}.{% endfor %}{% endif %}{% endif %} +
{% endfor %}