C++-Programmierung/ Vorlage:Buchinterner Link

Aus Wikibooks

[[C++-Programmierung/ {{{Abschnitt}}}|{{{Abschnitt}}}]]Da es zum lesen des C++-Buches zwei Möglichkeiten gibt (Kapitel- und Abschnittsweise) werden Buchinterne Links über diese Vorlage realisiert. Auf diese Weise werden je nachdem über welche Ansicht das Buch gelesen wird unterschiedliche Seiten verlinkt. Die Vorlage erwartet folgende Parameter:

  • Text (optional) – Text, der angezeigt werden soll. Falls nicht vorhanden, wird Überschrift benutzt, ist diese nicht vorhanden wird Kapitel benutzt, ist dieses nicht vorhanden wird Abschnitt genutzt.
  • Abschnitt (zwingend) – Abschnitt auf den Verlinkt werden soll
  • Kapitel (optional) – Kapitel auf das Verlinkt werden soll
  • Überschrift (optional) – Überschrift innerhalb eines Kapitels
  • Abschnittszusatz (optional) – Beim Abschnittsweise lesen des Buches kann der Kapitel-Parameter leider nicht in Kombination mit dem Überschriftsparameter ausgewertet werden. In der folge kann es vorkommen, das eine Überschrift auf einer Seite mehrfach (aber in Verschiedenen Kapiteln) auftaucht. Der MediaWiki-Parser hängt in diesem Fall einen Unterstrich, gefolgt von einer laufenden Nummer an die Anker-ID an. Diese laufende Nummer kann als Zusatz angegeben werden, um eine korrekte Verlinkung zu gewährleisten.
  • Kapitelzusatz (optional) – Wie Abschnittszusatz falls ein Kapitel zweimal die gleich Überschrift beinhaltet.

Ein praktischer Nebeneffekt dieser Vorgehensweise ist, dass ein externes Textverarbeitungsprogramm mit wesentlich weniger Aufwand eine Buchinterne Verlinkung realisieren kann, was das Erstellen von PDF-Versionen vereinfacht. Dies ist für die hiesige Anwendung jedoch nicht relevant. --Prog 20:09, 6. Dez. 2010 (CET)

{{#if: {{#titleparts:{{PAGENAME}}|1|3}} 
| [[{{#if: {{{Überschrift|}}} 
    | C++-Programmierung/ {{{Abschnitt}}}/ {{{Kapitel}}}#{{{Überschrift}}}        
         {{#if: {{{Kapitelzusatz|}}} 
         | _{{{Kapitelzusatz}}}
         }} 
    | {{#if: {{{Kapitel|}}} 
      | C++-Programmierung/ {{{Abschnitt}}}/ {{{Kapitel}}} 
      | C++-Programmierung/ Inhaltsverzeichnis#Anker:{{{Abschnitt}}}
      }}
    }} 
    {{!}} 
    {{{Text|{{{Überschrift|{{{Kapitel|{{{Abschnitt}}}}}}}}}}}}
  ]]
| [[{{#if: {{{Überschrift|}}} 
    | C++-Programmierung/ {{{Abschnitt}}}#{{{Überschrift}}}{{#if: {{{Abschnittszusatz|}}} | _{{{Abschnittszusatz}}}}} 
    | {{#if: {{{Kapitel|}}} 
      | C++-Programmierung/ {{{Abschnitt}}}#{{{Kapitel}}} 
      | C++-Programmierung/ {{{Abschnitt}}}}}}}{{!}}{{{Text|{{{Überschrift|{{{Kapitel|{{{Abschnitt}}}}}}}}
      }}
    }}
  ]]
}}