PDF-Export: Inhaltsverzeichnis + Seitenumbrüche pro Abschnitt
- Seite 2: Dynamisches Inhaltsverzeichnis mit klickbaren Anker-Links - Nur ausgewählte Bereiche erscheinen im Verzeichnis (CSS Counter) - Jeder Abschnitt beginnt auf neuer Seite (page-break-before) - Redundante Inline-Styles für Seitenumbrüche entfernt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -17,10 +17,16 @@ body { font-family: -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-se
|
|||||||
.cover-meta div { margin-bottom: 3px; }
|
.cover-meta div { margin-bottom: 3px; }
|
||||||
.cover-brand { font-size: 9pt; color: #0a1832; margin-top: 50px; letter-spacing: 1px; }
|
.cover-brand { font-size: 9pt; color: #0a1832; margin-top: 50px; letter-spacing: 1px; }
|
||||||
|
|
||||||
/* Classification Banner */
|
/* Inhaltsverzeichnis */
|
||||||
|
.toc { page-break-after: always; padding-top: 40px; }
|
||||||
|
.toc h2 { font-size: 16pt; font-weight: 700; color: #0a1832; border-bottom: 2px solid #c8a851; padding-bottom: 6px; margin-bottom: 24px; }
|
||||||
|
.toc-list { list-style: none; padding: 0; margin: 0; counter-reset: toc-counter; }
|
||||||
|
.toc-list li { padding: 10px 0; border-bottom: 1px solid #e0e0e0; counter-increment: toc-counter; }
|
||||||
|
.toc-list li::before { content: counter(toc-counter) "."; display: inline-block; width: 24px; font-weight: 600; color: #0a1832; }
|
||||||
|
.toc-list a { color: #0a1832; text-decoration: none; font-size: 11pt; }
|
||||||
|
|
||||||
/* Sections */
|
/* Sections */
|
||||||
.section { margin-bottom: 20px; }
|
.section { page-break-before: always; margin-bottom: 20px; }
|
||||||
.section h2 { font-size: 14pt; font-weight: 700; color: #0a1832; border-bottom: 2px solid #c8a851; padding-bottom: 4px; margin-bottom: 12px; }
|
.section h2 { font-size: 14pt; font-weight: 700; color: #0a1832; border-bottom: 2px solid #c8a851; padding-bottom: 4px; margin-bottom: 12px; }
|
||||||
.section h3 { font-size: 11pt; font-weight: 600; color: #0a1832; margin: 14px 0 6px; }
|
.section h3 { font-size: 11pt; font-weight: 600; color: #0a1832; margin: 14px 0 6px; }
|
||||||
|
|
||||||
@@ -77,10 +83,22 @@ tr:nth-child(even) { background: #f8f9fa; }
|
|||||||
<div class="cover-brand">AegisSight Monitor</div>
|
<div class="cover-brand">AegisSight Monitor</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Inhaltsverzeichnis -->
|
||||||
|
<div class="toc">
|
||||||
|
<h2>Inhaltsverzeichnis</h2>
|
||||||
|
<ul class="toc-list">
|
||||||
|
{% if 'zusammenfassung' in sections %}<li><a href="#sec-zusammenfassung">Zusammenfassung</a></li>{% endif %}
|
||||||
|
{% if 'bericht' in sections %}<li><a href="#sec-bericht">{% if incident.type == "research" %}Recherchebericht{% else %}Lagebild{% endif %}</a></li>{% endif %}
|
||||||
|
{% if 'faktencheck' in sections and fact_checks %}<li><a href="#sec-faktencheck">Faktencheck</a></li>{% endif %}
|
||||||
|
{% if 'quellen' in sections and sources %}<li><a href="#sec-quellen">Quellenverzeichnis</a></li>{% endif %}
|
||||||
|
{% if 'timeline' in sections and timeline %}<li><a href="#sec-timeline">Ereignis-Timeline</a></li>{% endif %}
|
||||||
|
{% if 'timeline' in sections and articles %}<li><a href="#sec-artikel">Artikelverzeichnis</a></li>{% endif %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Zusammenfassung / Executive Summary -->
|
<!-- Zusammenfassung -->
|
||||||
{% if 'zusammenfassung' in sections %}
|
{% if 'zusammenfassung' in sections %}
|
||||||
<div class="section">
|
<div class="section" id="sec-zusammenfassung">
|
||||||
<h2>{{ zusammenfassung_title }}</h2>
|
<h2>{{ zusammenfassung_title }}</h2>
|
||||||
<div class="exec-summary">
|
<div class="exec-summary">
|
||||||
{{ executive_summary | safe }}
|
{{ executive_summary | safe }}
|
||||||
@@ -90,7 +108,7 @@ tr:nth-child(even) { background: #f8f9fa; }
|
|||||||
|
|
||||||
<!-- Recherchebericht / Lagebild -->
|
<!-- Recherchebericht / Lagebild -->
|
||||||
{% if 'bericht' in sections %}
|
{% if 'bericht' in sections %}
|
||||||
<div class="section">
|
<div class="section" id="sec-bericht">
|
||||||
<h2>{% if incident.type == "research" %}Recherchebericht{% else %}Lagebild{% endif %}</h2>
|
<h2>{% if incident.type == "research" %}Recherchebericht{% else %}Lagebild{% endif %}</h2>
|
||||||
{% if lagebild_timestamp %}<p style="font-size:9pt;color:#888;margin-bottom:10px;">Aktualisiert: {{ lagebild_timestamp }}</p>{% endif %}
|
{% if lagebild_timestamp %}<p style="font-size:9pt;color:#888;margin-bottom:10px;">Aktualisiert: {{ lagebild_timestamp }}</p>{% endif %}
|
||||||
<div class="lagebild-content">{{ lagebild_html | safe }}</div>
|
<div class="lagebild-content">{{ lagebild_html | safe }}</div>
|
||||||
@@ -99,7 +117,7 @@ tr:nth-child(even) { background: #f8f9fa; }
|
|||||||
|
|
||||||
<!-- Faktencheck -->
|
<!-- Faktencheck -->
|
||||||
{% if 'faktencheck' in sections and fact_checks %}
|
{% if 'faktencheck' in sections and fact_checks %}
|
||||||
<div class="section">
|
<div class="section" id="sec-faktencheck">
|
||||||
<h2>Faktencheck</h2>
|
<h2>Faktencheck</h2>
|
||||||
<table>
|
<table>
|
||||||
<thead><tr><th>Behauptung</th><th>Status</th><th>Quellen</th></tr></thead>
|
<thead><tr><th>Behauptung</th><th>Status</th><th>Quellen</th></tr></thead>
|
||||||
@@ -118,7 +136,7 @@ tr:nth-child(even) { background: #f8f9fa; }
|
|||||||
|
|
||||||
<!-- Quellenverzeichnis -->
|
<!-- Quellenverzeichnis -->
|
||||||
{% if 'quellen' in sections and sources %}
|
{% if 'quellen' in sections and sources %}
|
||||||
<div class="section">
|
<div class="section" id="sec-quellen">
|
||||||
<h2>Quellenverzeichnis</h2>
|
<h2>Quellenverzeichnis</h2>
|
||||||
{% if source_stats %}
|
{% if source_stats %}
|
||||||
<h3>Quellenstatistik</h3>
|
<h3>Quellenstatistik</h3>
|
||||||
@@ -145,7 +163,7 @@ tr:nth-child(even) { background: #f8f9fa; }
|
|||||||
|
|
||||||
<!-- Timeline -->
|
<!-- Timeline -->
|
||||||
{% if 'timeline' in sections and timeline %}
|
{% if 'timeline' in sections and timeline %}
|
||||||
<div class="section" style="page-break-before:always;">
|
<div class="section" id="sec-timeline">
|
||||||
<h2>Ereignis-Timeline</h2>
|
<h2>Ereignis-Timeline</h2>
|
||||||
{% for event in timeline %}
|
{% for event in timeline %}
|
||||||
<div class="tl-item">
|
<div class="tl-item">
|
||||||
@@ -159,7 +177,7 @@ tr:nth-child(even) { background: #f8f9fa; }
|
|||||||
|
|
||||||
<!-- Artikelverzeichnis -->
|
<!-- Artikelverzeichnis -->
|
||||||
{% if 'timeline' in sections and articles %}
|
{% if 'timeline' in sections and articles %}
|
||||||
<div class="section" style="page-break-before:always;">
|
<div class="section" id="sec-artikel">
|
||||||
<h2>Artikelverzeichnis ({{ articles | length }} Artikel)</h2>
|
<h2>Artikelverzeichnis ({{ articles | length }} Artikel)</h2>
|
||||||
<table>
|
<table>
|
||||||
<thead><tr><th>Headline</th><th>Quelle</th><th>Sprache</th><th>Datum</th></tr></thead>
|
<thead><tr><th>Headline</th><th>Quelle</th><th>Sprache</th><th>Datum</th></tr></thead>
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren