
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}