我目前正在使用gitinfo2
文档中的包来显示当前的 git 修订、分支和日期。但是,如果我不在主分支上,我只想显示分支。这将需要一些条件包装,\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}