Flare for PDF!

Wie­der mal eine Sto­ry aus dem All­tag der Tech­nik­re­dak­ti­on1. Es geht um einen Publi­ka­ti­ons­ka­nal, den es in der TRK gar nicht mehr geben soll­te: Tech­ni­sche Doku­men­te als PDF. OMG!

Nun kann man sich end­los über die Begrenzt­heit von PDF aus­las­sen; allei­ne die Tat­sa­che, dass es eigent­lich nur digi­ta­li­sier­te Sei­ten sind, die Infor­ma­tio­nen immer nur auf ein vir­tu­el­les Blatt begrenzt und die also ab einem gewis­sen Umfang (Bild, Text,…) nicht mehr auf einen Blick erfass­bar sind, sagt schon alles. Oder die Suche. Oder Bewegt­bil­der mit und ohne Ton. Oder die Aktua­li­sier­bar­keit. Oder die Navi­ga­ti­on. Oder, oder, oder…: PDF ist sub­op­ti­mal in vie­ler­lei Hin­sicht.2

Und den­noch ist PDF sowohl im Redak­ti­ons­all­tag nicht weg­zu­den­ken (unver­zicht­bar bei Kor­rek­tur­läu­fen), als auch der kleins­te gemein­sa­me Nen­ner bei der Bereit­stel­lung von tech­ni­schen Infor­ma­tio­nen: kein Doku­ment lässt sich ver­lust­frei so schnell an die E‑Mail hän­gen, auf den Ser­ver oder den USB-Stick kopie­ren. Nichts geht ver­lo­ren, alles wird genau­so ange­zeigt wie es erstellt wur­de – kurz: die TRK kommt nicht ohne PDF aus.

Daher jetzt mal ein Exkurs, wie man sich den All­tag mit PDF trotz aller Unzu­läng­lich­kei­ten zumin­dest erträg­lich gestal­ten kann.

PDF

PDF ist eine Sei­ten­be­schrei­bungs­spra­che, d. h. alle Objek­te einer PDF wer­den auf eine vor­her zu defi­nie­ren­de Sei­ten­grö­ße „gemalt“. Ein Infor­ma­ti­ons­bau­stein wie eine Tabel­le, die sich über meh­re­re Sei­ten erstreckt, ist für das fer­ti­ge PDF-Doku­ment nicht als Ein­heit erkenn­bar: Es sind zwei Tabel­len auf zwei Sei­ten ohne Zusam­men­hang. Sei­ten­en­de heißt Infor­ma­ti­ons­en­de. Eine Tabel­le aber ist tat­säch­lich ein ein­zel­ner Infor­ma­ti­ons­bau­stein, egal über wie vie­le Sei­ten sie geht. Ein HAT (Help Aut­ho­ring Tool, Autoren­werk­zeug) wie Fla­re behan­delt daher eine Tabel­le immer als Gan­zes, unab­hän­gig von der Sei­ten­grö­ße und Anord­nung.

Topics

Mit Fla­re schreibt man Topics. Das sind ein­zel­ne Infor­ma­ti­ons­bau­stei­ne, die dann in einem Struk­tur­baum (ähn­lich einer Glie­de­rung, pas­sen­der­wei­se „Inhalts­ver­zeich­nis“, engl. „Table of con­tents“, TOC genannt) hin­ter­ein­an­der gesetzt wer­den. Sobald mit Fla­re ein PDF pro­du­ziert wird, wer­den die im Struk­tur­baum ange­leg­ten Topics anein­an­der gehängt und über die dafür erfor­der­li­chen Sei­ten ver­teilt. Kommt das Sei­ten­en­de vor dem Topic-Ende, fügt Fla­re eine neue Sei­te an und macht damit so lan­ge wei­ter, bis alle Topics aus dem Struk­tur­baum „ver­braucht“ sind.

Steuern mit CSS

Zunächst aber ein Hin­weis vor­ab: neben dem „klas­si­schen“ CSS3 hat Mad­Cap in Fla­re noch ein paar eige­ne Fea­tures ein­ge­baut, die ins­be­son­de­re die Druck­bar­keit, also das Sei­ten­lay­out in der PDF beein­flus­sen. Auf die­se Feau­res gehe ich in die­sem Abschnitt ein. Wer kei­ne PDF erstellt oder kei­ne beson­de­ren Lay­out-Anfor­de­run­gen ben­nö­tigt, wird die­se Fea­tures nicht benö­ti­gen.3

Zu die­sen Fea­tures zäh­len neben den Quer­ver­wei­sen (bei denen Fla­re unter­schei­det, ob sie in der PDF mit Sei­ten­zahl ange­ge­ben wer­den oder im Brow­ser ohne) vor allem die Num­me­rie­run­gen der Über­schrif­ten. Hier liegt auch der größ­te Unter­schied zwi­schen HTML und PDF, denn die sei­ten­ba­sier­te Struk­tur der PDF erleich­tert zwar die linea­re Infor­ma­ti­ons­auf­nah­me, indem man immer eine Sei­te vor­wärts oder rück­wärts „blät­tert“, sie erschwert aber die Ver­knüp­fung der Infor­ma­tio­nen, denn das „Sprin­gen“ auf ein ande­res Ziel (Quer­ver­weis) erschwert auch die Navi­ga­ti­on zurück.4

Auf dem Papier hat sich daher seit vie­len Jah­ren die Num­me­rie­rung der Über­schrif­ten als ein recht nütz­li­ches Fea­ture eta­bliert, das ich zwar schon öfter kri­ti­siert habe, das aber in man­chem Kon­text als sinn­voll erweist. Im Brow­ser ist sie auf­grund der Hyper­link­struk­tur unsin­nig, in der PDF durch­aus sinn­voll. Wie aber macht man das in Fla­re? Immer­hin haben wir ja nur ein Topic (einen Text­bau­stein), den wir mal mit, mal ohne Num­mer publi­zie­ren wol­len – und von dem wir weder wis­sen, an wel­cher Stel­le im Text er ste­hen wird, noch, wie tief er ver­schach­telt sein kann. Die Ver­schach­te­lungs­tie­fe ergibt sich in der Num­me­rie­rung durch die Anzahl der Zif­fern vor der Über­schrift – Ebe­ne 1 ist „1“, Ebe­ne 2 ist „1.1“ usw. – und die Posi­ti­on ergibt sich durch die Zif­fer selbst – „1.1“ kommt vor „1.2“.

Das will man aber nicht manu­ell anpas­sen, denn es wür­de ja dem Sinn des Sin­gle-Sourcing wider­spre­chen, müss­te man für jedes Topic meh­re­re Vari­an­ten vor­hal­ten, die jweils manu­ell unter­schied­lich num­me­rier­te Über­schri­ten besit­zen. Des­we­gen greift man in Fla­re auf „Tar­gets“ (Publi­ka­ti­ons­zie­le) zurück, die jeweils eine spe­zi­fi­sche CSS benut­zen kön­nen. Das ist anfangs viel­leicht etwas ver­wir­rend und benö­tigt ein biss­chen Hirn­schmalz, funk­tio­niert aber bestechend ein­fach: jede CSS kennt pri­mär zwei Publi­ka­ti­ons­zie­le: Online (HTML) und Druck (PDF).5 Um unter­schied­li­che Zie­le in der PDF anzu­spre­chen, muss man also meh­re­re CSS anle­gen, in denen die Num­me­rie­rungs­vor­ga­ben unter­schied­lich sind. Sobald dann die CSS bei der Publi­ka­ti­on auf eine Über­schrift (H1 bis H6) trifft, wen­det sie die Vor­ga­ben an, die dazu fest­ge­legt wur­den. Dar­über hin­aus kann für jedes Publi­ka­ti­ons­ziel auch ein spe­zi­fi­sches Sei­ten­lay­out vor­ge­ge­ben wer­den.

Im Tar­get wird alles zusam­men­ge­fasst: Struk­tur (TOC, Table of Con­tents), Sei­ten­lay­out und Style­sheet (CSS)

Damit haben wir drei Fak­to­ren, die belie­big gemischt wer­den kön­nen:

  • Publi­ka­ti­ons­ziel (PDF, HTML, …)
  • Style­sheet (CSS) mit der Unter­schei­dung nach Druck (print) und Online (ein­schließ­lich Fens­ter­brei­ten­un­ter­schei­dung)
  • Sei­ten­lay­out mit Rän­dern und Spal­ten, ein­sei­tig oder dop­pel­sei­tig, …

Durch die Kom­bi­na­ti­on aus CSS-Defi­ni­tio­nen, Sei­ten­lay­outs und Publi­ka­ti­ons­zie­len lässt sich damit eine Viel­zahl sehr unter­schied­li­cher PDF pro­du­zie­ren.

Überschriftennummerierung

Wer sich mit „Num­mern­krei­sen“ in Ado­be Frame­Ma­ker (oder InDe­sign) aus­kennt, für den ist die Ein­rich­tung von Über­schrif­ten­num­me­rie­run­gen kal­ter Kaf­fee. Alle ande­ren soll­ten sich kurz mit der Idee ver­traut machen, dass Num­me­rie­run­gen in einem Text meh­re­ren Sys­te­men fol­gen: eine Über­schrift­num­me­rie­rung folgt einer ande­ren Ssys­te­ma­tik als eine Bild- oder Tabel­len­num­me­rie­rung: wäh­rend ers­te­re bei­spiels­wei­se bei jedem Kapi­tel neu begin­nen soll („1“ – „1.1“- „1.2“ – … – „2“ – „2.1“ – …), wer­den Tabel­len oder Bil­der ein­fach durch­ge­hend num­me­riert oder nach Kapi­tel getrennt num­me­riert, wobei ein Bild natür­lich durch­ge­hend gezählt wird, selbst wenn dazwi­schen eine Tabel­le steht („Abb.1“- „Tab.1“ – „Abb.2“ – „Abb.3“ – „Tab.2“ – „Abb.4“ – …). Ent­spre­chend gilt das für Tabel­len. Und natür­lich auto­ma­tisch, klar.

Daher gibt es auch in Fla­re in der CSS für „Print“ eine eige­ne Defi­ni­ti­on für jeden Num­mern­kreis, gekenn­zeich­net durch zwei Groß­buch­sta­ben in der CSS (hier am Bei­spiel einer Über­schrift der ers­ten Ebe­ne H1 ein „GH“). Ein Bild bekomt dem­entspre­chend einen ande­ren Num­mern­kreis – bei­spiels­wei­se „GI“ – und eine Tabel­le „GT“.

Die ers­te Spal­te der Über­schrift­de­fi­ni­ti­on gilt für Online, die zwei­te Spal­te für Print. Nur dort ist eine Num­me­rie­rung sinn­voll.

Wer möch­te, kann in der CSS noch ein eige­nes For­mat für die Num­me­re­rung der Über­schrif­ten fest­le­gen (eine so genann­te „Klas­se“), in unse­rem Bei­spiel „sec­tion­n­um­ber“.

Als Ergeb­nis zeigt die Vor­an­sicht der PDF für das glei­che Topic „Con­nect the came­ra“ dann fol­gen­de Unter­schie­de:

Ein­spal­ti­ges Lay­out
Zwei­spal­ti­ges Lay­out, Bil­der wer­den auto­ma­tisch ska­liert auf Spal­ten­brei­te

In einer HTML dage­gen sähe das Topic dann so aus:

Online wird aus Grün­den der Les­bar­keit auch eine ande­re Schrift­art ver­wen­det. Aber das ist ein ande­res The­ma…

Verschachtelungstiefe

Für die Pro­fis lässt sich die­ses Spiel noch eine Win­dung wei­ter dre­hen: In Fla­re kön­nen die Vor­ga­ben des Style­she­ets für Über­schrif­ten von der Ver­schach­te­lung im Inhalts­ver­zeich­nis abhän­gig sein. Das bedeu­tet, dass das Style­sheet sei­ne Vor­ga­ben für die Fest­le­gun­gen der Über­schrif­ten unab­hän­gig davon anwen­det, was in der jewei­li­gen Über­schrift defi­niert ist. Man kann also getrost jede Über­schrift mit H1 fest­le­gen, in der Aus­ga­be wird dann das For­mat ange­wen­det, das für die Ver­schach­te­lungs­tie­fe gül­tig ist: eine H1 im Topic wird in der zwei­ten Ebe­ne als H2 for­ma­tiert.

Das ist natür­lich sehr prak­tisch, wenn ein Topic in unterschid­li­chen Inhalts­ver­zeich­nis­sen an unter­schied­li­chen Stel­len in der Hier­ar­chie steht.

Fazit

Wer mit der Tren­nung von Inhalt, Form und Struk­tur zurecht kommt, kann sich im Leben und im Beruf sehr viel Ärger erspa­ren.

Das gilt natür­lich vor allem in Fla­re…


  1. Ich spie­le mit dem Gedan­ken, den Begriff „Tech­nik­re­dak­ti­on“ mit „TRK“ abzu­kür­zen: TRK für „Tech­ni­sche Redak­ti­on und Kom­mu­ni­ka­ti­on“, denn der Job besteht ja nicht allei­ne dar­aus, tech­ni­sche Inhal­te ziel­grup­pen­ge­recht und ver­ständ­lich auf­zu­be­rei­ten, son­dern vor allem auch zu kom­mu­ni­zie­ren. 

  2. Klar kann man vie­les davon ein­bet­ten, scrip­ten oder ver­lin­ken, aber es ver­bes­sert nicht die Usa­bi­li­ty, wenn man dazu aus einem Pro­gramm zur PDF-Anzei­ge in ande­res Pro­gramm zur Film­wie­der­ga­be sprin­gen muss – und zurück. 

  3. Im Edi­tor sind sie mit „mc-“ mar­kiert, also leicht von den Funk­tio­nen zu unter­schei­den, die vom WWW-Kon­sor­ti­um als platt­form­un­ab­hän­gi­ger Min­dest­stan­dard gefo­dert wer­den, mit­hin von jedem Brow­ser dar­stell­bar sein müs­sen. 

  4. Wer sich damit inten­si­ver aus­ein­an­der­set­zen möch­te, fin­det vor allem bei Niel­sen et al. nähe­res

  5. Online erlaubt noch eine wei­te­re Unter­schei­dung nach einer belie­big gro­ßen Auf­tei­lung in Bild­schirm­brei­ten aber das ist eine Beson­der­heit des CSS3, nicht von Fla­re, und soll hier auch nicht berück­sich­tigt wer­den.