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

두 가지 문제가 있습니다.

  • 테스트에서는 \if비교를 위해 확장할 수 없는 두 개의 토큰을 찾을 때까지 다음 토큰을 확장합니다. 따라서 매크로 정의를 비교하는 데 사용할 수 없습니다. 스위치는 \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}

결과

관련 정보