Gutes Buch zur Makroprogrammierung

Posten und bewerten von LaTeX Büchern


faultier
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 30. Sep 2015, 18:23

Gutes Buch zur Makroprogrammierung

Beitrag von faultier »

Guten Morgen,

da ich Schwierigkeiten habe, bei der Makroprogrammierung im Zusammenhang mit Biblatex durchzusteigen, frage ich, ob es ein empfehlenswertes Buch gibt, das schrittweise in die Programmierung von Makros und die Arbeit mit den Biblatex Makros einführt.

Grüsse, Faultier

Gast

Beitrag von Gast »

Über (La)TeX-Bücher und Makroprogrammierung können Dir sicherlich andere gute Tipps geben. Da biblatex selbst aber noch vergleichsweise neu ist (und in der Entwicklung schon einigen Änderungen unterworfen war), gehe ich aber davon aus, dass viele Bücher das Paket gar nicht erwähnen oder nur in die Nutzung einführen, nicht aber in die "Programmierung" mit biblatex. Im Internet gibt es aber ein paar nette Quellen zum Thema biblatex.

Auf deutsch gibt es die zwei Standardwerke von Dominik Waßenhoven aus der TeXnischen Komödie Bibliographien erstellen mit biblatex (Teil 1) und Bibliographien erstellen mit biblatex (Teil 2). Da diese Artikel nunmehr sieben Jahre alt sind, können sie in Details überholt sein, aber der Kern bleibt der gleiche.

E. Frank Sandig hat neulich einen eigenen biblatex-Stil erstellt (biblatex-iest) und darüber geschrieben, der Artikel (hier bei github) ist auch in einigen Internet-Magazinen erschienen.

Mangels Italienischkenntnissen konnte ich mir leider Creare stili bibliografici con biblatex: l’esperienza del pacchetto biblatex-philosophy von Ivan Valbusa, dem Entwickler der sehr interessanten biblatex-philosophy-Familie, nie wirklich zu Gemüte führen. Der Stil biblatex-philosophy lässt aber auf einen gut fundierten und interessanten Artikel hoffen.

Weiter gibt es Biblatex customization von Siarhei Khirevich. Bei ein, zwei Details bin ich nicht ganz der Meinung, dass die dort vorgestellte Lösung die beste ist, und der Artikel geht nur auf die notwendigen Änderungen ein, bibmacros werden nicht geändert, bietet aber eine schöne Einführung in die Problematik.

Bei TeX.SX gibt es die Guidelines for customizing biblatex styles und viele weiterführende Fragen.

Neben diesen theoretischen Artikeln kann ich Dir nur empfehlen, Dich selbst mit bestehenden biblatex-Stilen zu beschäftigen, sie anzusehen und zu analysieren. Wichtig sind biblatex.def, standard.bbx und dann natürlich die .bbx- und .cbx-Dateien der einzelnen Stile. Die Standard-Stile sind sicherlich die Beispiele für best practice. Das Paket biblatex-apa wird von einem der biblatex-Entwickler geschrieben, vom Code sollte also auch die Dateien dort ein gutes Beispiel sein, wenn auch der Vorgaben der APA an einige Stellen nichts für schwache Nerven sind. Joseph Wrights biblatex-chem-Stile halte ich auch für gute Vorbilder. Auch der Code des oben bereits erwähnten biblatex-philsophy von Ivan Valbusa ist sehr ansehnlich.

Um ältere Pakete (sagen wir mal willkürlich kein Update mehr seit 2013) ist es sicherer, zunächst einen Bogen zu machen, da dort teilweise veraltete Befehle genutzt werden.

faultier
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 30. Sep 2015, 18:23

Beitrag von faultier »

Danke für die vielen Links. Besonders die zu den Beispielscripten. In dieser Weise gehe ich auch gerade vor:

Ich schaue mir die biblatex.def an und suche mir Befehle heraus, sowie einige der im Befehl verwendeten Makros. Dann experimentierte ich damit etwas herum, scheitere aber oft an Fehlermeldungen und komme nicht ganz dran, welche Makros mir zur Verfügung stehen.

Das Paket csquotes macht es mir dann noch etwas schwerer. Dort wollte ich schauen, mit welchem Makro eine entsprechende Zitation erfolgt. Csquotes hat aber wieder eine scheinbar ganz andere Makrologik als Biblatex.

Als nächstes werde ich mal versuchen, ein Feld einer Bibdatei auszulesen und anhand diese Feldes Latex automatisch zwischen footcite und cite entscheiden. Das scheint mir noch relativ simpel zu sein.

Viele Grüße
Faultier

Gast

Beitrag von Gast »

Ich denke mit biblatex.def und standard.bbx solltest Du schon sehr weit kommen. Leider sind die hier bereitgestellten Makros nicht dokumentiert, aber sie sind recht sinnvoll benannt und die Beispielnutzung in standard.bbx ist häufig sehr erhellend.

csquotes und biblatex wurden von demselben Entwickler erdacht und sind sich daher doch recht ähnlich. biblatex baut allerdings noch eine zusätzliche Makroebene ein, die csquotes in der Form nicht hat oder braucht. Während die [d]biblatex[/d]-Doku wirklich lang ist, ist die [d]csquotes[/d]-Doku noch etwas humaner, mit der Suchfunktion kann man aber beiden gut zu Leibe rücken (man muss nur das Glück haben, die richtigen Suchbegriffe einzugeben).

Zu Deinem nächsten Projekt: Ich glaube, dass das tatsächlich relativ kompliziert ist. Zu dem Zeitpunkt nämlich, wo biblatex entscheidet, ob es in eine Fußnote geht, kennt es die Felder des Eintrages noch nicht. Stell Dir vor was passiert, wenn Du in Deinem Befehl zwei Werke zitierst, eins, das eine Fußnote braucht und eines, das keine möchte.
Es scheint mir außerdem sehr merkwürdig am Werk festzumachen, ob ein Fußnotenzitat sinnvoll ist oder nicht.

faultier
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 30. Sep 2015, 18:23

Beitrag von faultier »

Da muss ich mir die Abläufe noch genauer ansehen. Momentan verändert er aufgrund des Inhaltes von Entrysubtype bereits die Formatierung. Daher ging ich davon aus, eine entsprechende Abfrage wäre möglich, um dann ggf. "\mkbibfootnote" oder "\mkbibparens" setzen zu können, denn nur dadurch unterscheiden sich footcite- und cite-Kommando.

Das mit den Kurzbelegen ist einfach erklärt. Bibelverse, kirchliche Verlautbarungen usw werden immer im Text als Kurzreferenz gesetzt. D.h. der Denzinger wird z.b. immer als Kurzreferenz im Stile (DH 4320) gesetzt. Für den Ausnahmefall, dass man mal in einem Text vom Standard abweichen muss, kann ja problemlos auf den Befehl \footcite zurückgegriffen werden.

Der Eintrag "Kurzbeleg" im Subentrytype-Feld führt momentan zur Ausgabe (DH 5343) statt Denzinger 2002, S. 17. Deswegen war es für mich naheliegend, dass folgende Logik möglich sein müsste:
\DeclareCiteCommand{\Zitat}
 {WENN Entrysubtype="Kurzbeleg}
   {[\mkbibparens]}
   {[\mkbibfootnote]}
  {\usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \usebibmacro{cite}}
  {\multicitedelim}
  {\usebibmacro{postnote}}
Langfristig ist meine Hoffnung, dass ich alles in einem Befehl unterbringen kann. Anhand der Prüfung vom optionalen Feld 1 auf "Vgl." hin sollen keine Anführungszeichen gesetzt werden, anhand der Prüfung des Entrysubtypes weiterhin entschieden, ob eine Kurzreferenz im Text oder eine Fußnote genutzt werden muss. Der Vollständigkeit halber eine Prüfung, ob der Bibkey leer ist, um dann ausschließlich den Befehl \enquote{} zu nutzen.

Am Ende soll es also einen Zitationsbefehl geben, der über die Prüfung der Optionen und des Eintrages "Kurzbeleg" entscheiden kann, welche Art von Ausgabe notwendig ist (direkt, indirekt, Fußnote, Kurzbeleg oder nur Anführungszeichen ohne Beleg).
Zuletzt geändert von faultier am Mi 21. Okt 2015, 11:24, insgesamt 3-mal geändert.

Gast

Beitrag von Gast »

Das Ändern der Formatierung geht einwandfrei, denn da reicht es, erst im Citeloop die Entscheidung zu treffen. Ob Du eine Fußnote brauchst oder nicht, wird normalerweise früher entschieden. Es geht aber auch anders BibLaTeX \DeclareCiteCommand: How to check shorthand and citeseen and choose <wrapper> accordingly?, das hat aber in paar andere Nachteile.

faultier
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 53
Registriert: Mi 30. Sep 2015, 18:23

Beitrag von faultier »

Der Link ist super, vielen Dank.

Den dort geposteten Code habe ich etwas angepasst:
\DeclareCiteCommand{\mycite}[\unspace]
  {}
  {\usebibmacro{citeindex}%
     \iffieldundef{shorthand}
     {\mkbibfootnote{\usebibmacro{prenote}\usebibmacro{cite}\usebibmacro{cite:postnote}}}
     {\space\mkbibparens{\usebibmacro{prenote}\printfield{shorthand}\usebibmacro{cite:postnote}}}}
  {\multicitedelim}
  {}

Mit folgendem Kommando kann ich noch die Vorteile der Quote-Umgebung nutzen:
\NewDocumentCommand\blockcite{  o m m }
 {%
 {\blockquote[{\mycite[#1]{#2}}]{#3}}
 %
 }
Mal sehen, ob ich es langfristig auch noch hinbekomme, die beiden Befehle zu einem zu machen.

Viele Grüße

Antworten