Zurück zur Taverne

LaTeX-Vorlage für Andor

Re: LaTeX-Vorlage für Andor

Beitragvon UhrMensch » 5. Dezember 2024, 20:17

Ja, beides geht:

Kampagnenname:
Den Kampagnennamen legt man mittels
Code: Alles auswählen
\documentclass[..., series name=Name]{anderlegend}
fest. (Wenn der Name ein Komma enthält, muss er in geschweifte Klammern gesetzt werden, wie alle Texte, die bei solchen Optionen übergeben werden).
Damit der Name auch geschrieben wird, muss auf jeder Legendenkarte der Befehl \addseriesname stehen. (Ich weiß gerade nicht, ob eine eine Möglichkeit gibt, das automatisch auf jeder Legendenkarte zu machen. Ich glaube aber, dass es noch nicht geht.) Standardmäßig wird der Kampagnenname auf derselben Höhe wie der Text "Fan-Legende" geschrieben, sodass sich beide überlappen. Die Höhe kann man (am Anfang der Legende) mit
Code: Alles auswählen
\setlayoutparameters{series name/ypos=...}
ändern.

Text "Fan-Legende":
Einfach mittels
Code: Alles auswählen
\setlayoutparameters{texts/fan legend=...}
durch einen anderen Text ersetzen.
UhrMensch
 
Beiträge: 234
Registriert: 19. April 2015, 20:34

Re: LaTeX-Vorlage für Andor

Beitragvon Butterbrotbär » 30. März 2025, 15:44

Butterbrotbär hat geschrieben:Wie schon früher einmal geschrieben, habe ich UhrMenschs Vorlage bislang leider noch nicht auf meinem Laptop zum Laufen gekriegt. Aber in der Overleaf-Version 


Heute habe ich es endlich geschafft, UhrMenschs Vorlage auch lokal auf meinem Laptop zum Laufen zu bringen. Und es wäre so einfach gewesen! :P
  • TeX Live ist einer der weitverbreitesten LaTeX-Distributionen.
  • VSCode als Editor nutze ich ohnehin schon tagtäglich für alle meine Programmierbedürfnisse.
  • LaTeX Workshop (als Extension innerhalb von VSCode downloadbar) erlaubt es, einfach zwischen verschiedenen Runnern auszuwählen, also auch das benötigte LuaLaTeX.

Und mit diesen drei Punkten gibt es keine Fehlermeldungen mehr und alles kompiliert, wie es soll. Soll heißen, ich bin nicht mehr abhängig von Overleafs maximalen Dateigrößen und Kompilierzeiten! :D Also, Legolas Grünblatt, falls du immer noch nach Overleaf-Alternativen suchen solltest...

LG BBB
Benutzeravatar
Butterbrotbär
 
Beiträge: 3443
Registriert: 26. Februar 2019, 20:56
Wohnort: Die gemütliche Hütte des Butterbrotbären natürlich^^

Re: LaTeX-Vorlage für Andor

Beitragvon UhrMensch » 1. Mai 2025, 19:36

Ok, schön, dass das alles problemlos funktioniert hat.

Zur Vorlage: Troll, ich habe dein Problem noch nicht vergessen, mich aber in den letzten Monaten nicht mehr darum gekümmert, weil du ja eine behelfsmäßige Lösung gefunden hast. Irgendwann schaue ich mir das aber noch an.
Ich werde meine Vorlage auch demnächst für "Das Ferne Land" anpassen. Da einige fleißige Helfer die neuen Spielpläne schon ins Wiki eingefügt haben, kann ich die auch in die Vorlage übernehmen. Weitere Anpassungen (falls nötig) gibt es erst, wenn ich "Das Ferne Land" selber habe. Wann das ist, kann ich aber noch nicht sagen.
UhrMensch
 
Beiträge: 234
Registriert: 19. April 2015, 20:34

Re: LaTeX-Vorlage für Andor

Beitragvon Legolas Grünblatt » 4. Mai 2025, 07:09

UhrMensch hat geschrieben:Ich werde meine Vorlage auch demnächst für "Das Ferne Land" anpassen. Da einige fleißige Helfer die neuen Spielpläne schon ins Wiki eingefügt haben, kann ich die auch in die Vorlage übernehmen. Weitere Anpassungen (falls nötig) gibt es erst, wenn ich "Das Ferne Land" selber habe. Wann das ist, kann ich aber noch nicht sagen.

Oh, ich freue mich schon darauf! :P
Benutzeravatar
Legolas Grünblatt
 
Beiträge: 213
Registriert: 25. Mai 2024, 07:20
Wohnort: Die goldenen Wälder von Lothlorien

Re: LaTeX-Vorlage für Andor

Beitragvon UhrMensch » 21. Juni 2025, 21:32

Ich habe gerade eine neue Version hochgeladen. Neuigkeiten:
  • Es gab anscheinend eine Inkompatibilität mit neuen Versionen des graphicx-Package, die ich behoben habe.
  • Alle vier Spielpläne aus "Das Ferne Land" sind verfügbar unter den Namen "steppe-lands-mild", "azturia", "lake-village" und "troll-lair". Da es "Das Ferne Land", soweit ich weiß, bisher nur auf Deutsch gibt und daher noch kein offizieller englischer Name von Azturien existiert, musste ich einen erfinden, um hier einheitlich englische Namen zu benutzen. Die Bilder der Spielpläne stammen wieder aus dem Wiki.
  • Mit dem Parameter \documentclass[..., dummy sections]{andorlegend} wird der Befehl \section{} überschrieben, sodass er nichts macht. Auf diese Weise kann man z. B. vor jeder Legendenkarte eine \section ergänzen, damit LaTeX-Editoren wie Overleaf diese Befehle in ihrem Inhaltsverzeichnis anzeigen.
  • Mit dem Parameter \documentclass[..., andor font=installed]{andorlegend} kann man die Andor-Schriftart verwenden, wenn sie auf dem PC installiert ist. Mit \documentclass[..., andor font={file=Dateiname}]{andorlegend} kann man sie benutzen, wenn sie nicht installiert ist, aber sich in der Datei Dateiname im Ordner der Legende befindet. In beiden Fällen wechselt der Befehl \andorfont zur Andor-Schriftart.
Um Trolls Problem habe ich mich in dieser Version noch nicht gekümmert.
UhrMensch
 
Beiträge: 234
Registriert: 19. April 2015, 20:34

Re: LaTeX-Vorlage für Andor

Beitragvon Mivo » 1. Oktober 2025, 11:59

Hallo in die Runde,

in meinen Augen wäre es ein tolles Feature, wenn man mehrere, fortlaufende Karten (wie A1 ... A5) nicht einzeln anlegen müsste, sondern einfach als eine Karte schreibt und dann daraus beim Kompilieren einzelne Karten gemacht werden.

Also, man schreibt:

Code: Alles auswählen
\begin{legendcard}{letterbox}{A}
   \addmaintext{
      ...
   }
\end{legendcard}


... und daraus werden dann einzelne Karten für A1, A2, ... erstellt, wenn nicht alles auf eine Karte passt.

Dass das Aufteilen "von alleine" passiert, ist vermutlich schwer umzusetzen -- aber mich würde @UhrMenschs Meinung dazu interessieren, immerhin kannst du ja bei \addmaintext* auch irgendwie feststellen, ob der Text auf die Karte passt oder nicht --; eine Lösung, die aber zumindest in diese Richtung geht, ist ein Befehl, nennen wir ihn \cardbreak, mit dem man Legendenkarten umbrechen kann:

Code: Alles auswählen
\begin{legendcard}{letterbox}{A}
   \addmaintext{
      ...
      \cardbreak
      ...
   }
\end{legendcard}


... würde also werden zu:

Code: Alles auswählen
\begin{legendcard}{letterbox}{A1}
   \addmaintext{
      ...
      \autocontinueat{A2}
   }
\end{legendcard}

\begin{legendcard}{letterbox}{A2}
   \addmaintext{
      ...
   }
\end{legendcard}


..., ohne dass man die legendcard-Umgebung jedes Mal neu anlegen muss.

Ich habe das mal implementiert. Mit diesem Code funktioniert der Befehl \cardbreak wie oben beschrieben:

Code: Alles auswählen
\let\oldlegendcard\legendcard
\let\endoldlegendcard\endlegendcard
\let\oldaddmaintext\addmaintext

\ExplSyntaxOn

\NewDocumentEnvironment{newlegendcard}{m m o o +b}{
   \tl_set:Nn \g_legendcard_paramA_tl {#1}
   \tl_set:Nn \g_legendcard_paramB_tl {#2}
   \tl_set:Nn \g_legendcard_paramC_tl {#3}
   \tl_set:Nn \g_legendcard_paramD_tl {\IfNoValueTF{#4}{#2}{\tl_if_blank:nTF {#4} {#2} {#4}}}
   \tl_set:Nn \l_legendcard_body_tl {#5}
   \seq_set_split:NnV \l_legendcard_body_seq {\addmaintext} \l_legendcard_body_tl
   \seq_pop_left:NN \l_legendcard_body_seq \g_legendcard_info_tl
   \seq_map_inline:Nn \l_legendcard_body_seq {\addmaintext{##1}}
}{}

\NewDocumentCommand{\newaddmaintext}{+m}{
   \tl_set:Nn \l_legendcard_maintext_tl {#1}
   \regex_replace_all:nnN {(\c{end}\{bulletlist\}[\s\S]*?)\c{cardbreak}([\s\S]*?\c{begin}\{bulletlist\})} {\1\c{xxxcardbreakxxx}\2} \l_legendcard_maintext_tl
   \regex_replace_all:nnN {(\c{begin}\{bulletlist\}[\s\S]*?)\c{cardbreak}([\s\S]*?\c{end}\{bulletlist\})} {\1\c{end}\{bulletlist\}\c{vspace}\{-\c{parskip}\}\c{xxxcardbreakxxx}\c{begin}\{bulletlist\}\2} \l_legendcard_maintext_tl
   \regex_replace_all:nnN {(\c{begin}\{bulletlist\}[\s\S]*?)\c{cardbreak}([\s\S]*?\c{end}\{bulletlist\})} {\1\c{end}\{bulletlist\}\c{vspace}\{-\c{parskip}\}\c{xxxcardbreakxxx}\c{begin}\{bulletlist\}\2} \l_legendcard_maintext_tl
   \regex_replace_all:nnN {\c{xxxcardbreakxxx}} {\c{cardbreak}} \l_legendcard_maintext_tl
   \seq_set_split:NnV \l_legendcard_maintext_seq {\cardbreak} \l_legendcard_maintext_tl
   \int_new:N \l_legendcard_index_int
   \int_zero:N \l_legendcard_index_int
   \int_new:N \l_legendcard_maintext_int
   \int_set:Nn \l_legendcard_maintext_int {\seq_count:N \l_legendcard_maintext_seq}
   \seq_map_inline:Nn \l_legendcard_maintext_seq {
      \int_incr:N \l_legendcard_index_int
      \tl_clear:N \l_legendcard_title_tl
      \tl_put_right:Nx \l_legendcard_title_tl {\tl_use:N \g_legendcard_paramB_tl}
      \int_compare:nNnT {\l_legendcard_maintext_int} > {1} {
         \tl_if_eq:VnTF \g_legendcard_paramA_tl {letterbox}
            {\tl_put_right:Nx \l_legendcard_title_tl {\int_use:N \l_legendcard_index_int}}
            {\tl_put_right:Nx \l_legendcard_title_tl {~\int_use:N \l_legendcard_index_int}}
      }
      \begin{oldlegendcard}{\tl_use:N \g_legendcard_paramA_tl}{\tl_use:N \l_legendcard_title_tl}[\tl_use:N \g_legendcard_paramC_tl][\tl_use:N \g_legendcard_paramD_tl]
         \tl_use:N \g_legendcard_info_tl
         \oldaddmaintext{
            ##1
            \int_compare:nNnT {\l_legendcard_maintext_int} > {\l_legendcard_index_int} {
               \tl_clear:N \l_legendcard_title_next_tl
               \tl_put_right:Nx \l_legendcard_title_next_tl {\tl_use:N \g_legendcard_paramB_tl}
               \tl_if_eq:VnTF \g_legendcard_paramA_tl {letterbox}
                  {\tl_put_right:Nx \l_legendcard_title_next_tl {\int_eval:n {\l_legendcard_index_int + 1}}}
                  {\tl_put_right:Nx \l_legendcard_title_next_tl {~\int_eval:n {\l_legendcard_index_int + 1}}}
               \autocontinueat{\tl_use:N \l_legendcard_title_next_tl}
            }
         }
      \end{oldlegendcard}
      \renewcommand{\addcardlistbox}[1]{}
   }
}

\ExplSyntaxOff

\let\legendcard\newlegendcard
\let\endlegendcard\endnewlegendcard
\let\addmaintext\newaddmaintext


Hinweis: Man kann Code auch in separaten Dateien auslagern und dann mit \input{...} importieren. So "müllt" man nicht seine ganze Hauptdatei zu.

Was passiert:
Der obige Code definiert die legendcard-Umgebung und den Befehl \addmaintext um. Die sehen also noch aus wie die alten, funktionieren aber intern anders. Das sollte man im Hinterkopf haben, falls man mal auf Fehlersuche gehen muss.

Was funktioniert:
- Zahlen werden automatisch nach dem Kartennamen eingefügt, falls es sich um mehr als eine fortlaufende Karte handelt.
- \autocontinueat{} wird automatisch eingefügt (außer bei der letzten Karte)
- Mit \autocardref{}, \autocontinueat{} etc. kann man auf den Namen ohne Zahl referenzieren (z. B. \autocardref{A}) und es wird dann auf die erste Karte verlinkt (z. B. A1).
- Man kann \cardbreak auch innerhalb einer bulletlist-Umgebung verwenden (die wird dann automatisch geschlossen und auf der nächsten Karte wieder geöffnet), aber nicht in anderen Umgebungen oder in verschachtelten Strukturen

Was nicht funktioniert:
- \addmaintext muss jetzt der letzte Befehl innerhalb einer legendcard-Umgebung sein (hat man vorher zwar auch in der Regel so gemacht, war da aber nicht verpflichtend so)
- \addmaintext* funktioniert nicht mehr richtig
- \autocardlisttext funktioniert nicht mehr richtig; da muss ich noch rausfinden, wieso


Ich werde da in Zukunft wohl noch ein bisschen weiter dran rumbasteln. Zur Zeit bearbeite ich eine Legende damit und es geht wirklich um einiges schneller als vorher. Würde mich aber auch freuen, wenn @UhrMensch etwas in der Art direkt in seinen Code einbaut. :-)

LG Mivo
Mivo
 
Beiträge: 268
Registriert: 6. April 2023, 13:23

Vorherige