gitinfo2 僅在不在 master 上時顯示分支

gitinfo2 僅在不在 master 上時顯示分支

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}

結果

相關內容