gitinfo2 マスター上にない場合にのみブランチを表示する

gitinfo2 マスター上にない場合にのみブランチを表示する

gitinfo2現在、ドキュメント内のパッケージを使用して、現在の git リビジョン、ブランチ、日付を表示しています。ただし、マスター ブランチにいない場合にのみブランチを表示したいと考えています。これには条件付きのラップアラウンドが必要になります\gitBranchが、これを理解できませんでした。

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}

これまで、私はこれを試しましたが、成功しませんでした:

\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

問題は 2 つあります。

  • このテストは\if、比較のために 2 つの展開不可能なトークンが見つかるまで、次のトークンを展開します。したがって、マクロ定義の比較には使用できません。スイッチは\ifx、次の 2 つのトークンを展開せずに比較するため、ここではより適しています。

  • \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}

結果

関連情報