
Ich verwende das gitinfo2
Paket derzeit in meinem Dokument, um die aktuelle Git-Revision, den aktuellen Zweig und das aktuelle Datum anzuzeigen. Ich möchte den Zweig jedoch nur anzeigen, wenn ich mich nicht im Master-Zweig befinde. Dies erfordert eine gewisse bedingte Umschließung, \gitBranch
aber ich konnte das nicht herausfinden.
MWE:
\documentclass{scrbook}
\usepackage{gitinfo2}
% additional install is required. See package documentation for details.
\begin{document}
\begin{titlepage}
\centering
\ \\
\vspace{5cm}
{\Huge Document title}
\vspace{5cm}
Revision: \gitAbbrevHash on branch \gitBranch \ \gitCommitterDate
\end{titlepage}
Some text.
\end{document}
Bisher habe ich dies ohne Erfolg versucht:
\documentclass{scrbook}
\usepackage{gitinfo2}
% additional install is required. See package documentation for details.
\newcommand{\masterBranch}{master}
\begin{document}
\begin{titlepage}
\centering
\ \\
\vspace{5cm}
{\Huge Document title}
\vspace{5cm}
Revision: \gitAbbrevHash
\if\gitBranch\masterBranch
\else
on branch \gitBranch
\fi
\ \gitCommitterDate
\end{titlepage}
Some text.
\end{document}
Antwort1
Es gibt zwei Probleme:
Der Test
\if
expandiert die nächsten Token, bis er zwei nicht expandierbare Token zum Vergleich findet. Er kann daher nicht zum Vergleichen von Makrodefinitionen verwendet werden. Der Schalter\ifx
ist hier besser geeignet, da er die nächsten beiden Token vergleicht, ohne sie zu expandieren.\gitBranch
enthält den Namen des Zweigs nicht direkt, sondern verwendet erweiterbare (hoffentlich immer) Makros, um den Namen abzurufen.\detokenize
Wird auch verwendet, um die Zeichen in Token mit Kategoriecode 12 (andere) umzuwandeln, wie Ziffern und Satzzeichen.
Das bedeutet:
- Verwendung von
\ifx
anstelle von\if
. \edef\gitBranch{\gitBranch}
um ein Makro mit dem erweiterten Zweignamen zu erhalten.\edef\branchMaster{\detokenize{master}}
um die richtigen Kategoriencodes zu erhalten.
Ergebnis:
\documentclass{scrbook}
\usepackage{gitinfo2}
\edef\masterBranch{\detokenize{master}}
\edef\gitBranch{\gitBranch}
\begin{document}
Revision: \gitAbbrevHash\ %
%
\ifx\gitBranch\masterBranch
\else
on branch \gitBranch\ %
\fi
%
\gitCommitterDate
\end{document}