
В настоящее время я использую gitinfo2
пакет в своем документе для отображения текущей ревизии git, ветки и даты. Однако я хотел бы отображать ветку только в том случае, если я не нахожусь на ветке master. Это потребует некоторого условного переноса, \gitBranch
но я не смог разобраться с этим.
МВЭ:
\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}
До сих пор я пробовал следующее, но безуспешно:
\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}
решение1
Есть две проблемы:
Тест
\if
расширяет следующие токены, пока не найдет два нерасширяемых токена для сравнения. Поэтому его нельзя использовать для сравнения определений макросов. Switch\ifx
здесь подходит лучше, поскольку он сравнивает следующие два токена без расширения.\gitBranch
не содержит имени ветви напрямую, вместо этого он использует расширяемые (надеюсь, всегда) макросы для получения имени. Также\detokenize
используется для преобразования символов в токены с кодом категории 12 (другие), такие как цифры и знаки препинания.
Это значит:
- Использование
\ifx
вместо\if
. \edef\gitBranch{\gitBranch}
чтобы получить макрос с расширенным именем ветки.\edef\branchMaster{\detokenize{master}}
чтобы получить правильные коды категорий.
Результат:
\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}