
패키지 gitinfo2
는 \gitAuthorDate
현재 커밋 날짜를 ISO 형식(예: 2018-02-22
.
내 문서 내에서 이 날짜를 다른 형식으로 사용하고 싶기 때문에 패키지를 사용하여 datetime2
출력을 저장 \gitAuthorDate
하고 형식을 다시 지정해 보았습니다.
다음은 문서에 따라 적절한 후크가 설치된 git 버전 디렉터리에서 사용되는 최소 예입니다 gitinfo2
.
\documentclass{article}
\usepackage[grumpy,mark]{gitinfo2}
\usepackage[calc]{datetime2}
\DTMsavedate{commitdate}{\gitAuthorDate}
\begin{document}
Hello world!
\end{document}
불행하게도 이것은 나에게
Runaway argument?
\gitInf@authsdate \@dtm@endparsedate \cslet {@dtm@commitdate@year}{\@dtm@year \
ETC.
! Paragraph ended before \@dtm@parsedate was complete.
<to be read again>
\par
l.9
이 오류를 해결하려면 어떻게 해야 합니까? 아니면 에서 제공한 날짜 형식을 다시 지정할 수 있는 다른 방법이 있습니까 \gitAuthorDate
?
편집하다
Nicola의 요청에 따라 \gitAuthorDate가 어떻게 확장되는지 확인하기 위한 대화형 세션의 발췌문은 다음과 같습니다.
*\show\gitAuthorDate
...
> \gitAuthorDate=\long macro:
->\gitInf@authsdate .
*\makeatletter
*\show\gitInf@authsdate
> \gitInf@authsdate=macro:
->2018-02-22.
답변1
(댓글을 답변으로 전환합니다.) \DTMsavedate
두 번째 인수의 첫 번째 토큰에 대해 한 수준 확장을 수행하므로 2018-02-22로 직접 정의된 경우에는 작동 \gitAuthorDate
하지만 더 복잡한 방식으로 정의된 경우에는 작동하지 않습니다. . \gitAuthorDate
제공한 확장을 고려하여 제안된 솔루션을 사용할 수 있습니다.
\makeatletter\DTMsavedate{commitdate}{\gitInf@authsdate}\makeatother
그러나 패키지가 이후 버전에서 내부 명령을 변경하는 경우에는 내부 명령을 사용하지 않는 것이 가장 좋습니다. 대신, 보다 일반적인 해결책은 인수가 다음으로 전달되기 전에 완전히 확장되었는지 확인하는 것입니다 \DTMsavedate
.
\newcommand{\esavedate}[2]{%
\begingroup
\edef\x{\noexpand\endgroup\noexpand\DTMsavedate{#1}{#2}}\x
}
\esavedate{commitdate}{\gitAuthorDate}