%3F.png)
다음 줄을 사용하여 문서의 소스 코드와 함께 git 저장소의 이름을 PDF에 기록합니다.
\input|"git config --get remote.origin.url | xargs basename"
이름에 밑줄이 있는 저장소(예 repo_name
: 특수 문자로 인해 컴파일러가 수학 모드로 전환됨)에 문제가 있습니다.
아마도 \catcode
다음과 같이 사용할 수 있을 것입니다.다른 답변, 그러나 문제를 일으킬 수 있는 것은 밑줄 뿐만이 아니며 디렉터리 이름에 발생할 수 있는 모든 특수 문자에 대해 강력하게 만드는 것을 선호합니다.
답변1
당신이 사용할 수있는 catchfile
:
\documentclass{article}
\usepackage{catchfile}
\begin{document}
\CatchFileDef\repository{|"kpsewhich eng_rs.sty | xargs basename"}{\catcode`_=12 }
\texttt{\repository}
\texttt{\meaning\repository}
\end{document}
예를 들어 밑줄이 있는 파일 이름을 사용했습니다.
다음 과 같은 더 나은 버전이 있을 수 있습니다 xparse
.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\getfilename}{O{}mo}
{
% #1 = optional list of characters to be made printable
% #2 = variable part
% #3 = optional command to save the returned token list in
\tl_set_from_file:Nnn \l_maciek_filename_tl
{
\maciek_filename_setother:n { #1 }
}
{
|"#2"
}
\IfValueTF{#3}
{
\tl_clear_new:N #3
\tl_set_eq:NN #3 \l_maciek_filename_tl
}
{
\tl_use:N \l_maciek_filename_tl
}
}
\cs_new_protected:Nn \maciek_filename_setother:n
{
\tl_map_function:nN { #1 } \char_set_catcode_other:N
}
\ExplSyntaxOff
\begin{document}
\getfilename[_]{kpsewhich eng_rs.sty | xargs basename}
\getfilename[_]{kpsewhich eng_rs.sty | xargs dirname}[\foo]
\meaning\foo
\getfilename[\%]{ls | grep b}
\getfilename[\%_]{ls | grep y}
\end{document}
저는 첫 번째 선택적 인수의 사용법을 보여주기 위해 a%b.tex
두 개의 파일을 만들었습니다 . a_x%y.tex
백슬래시, 퍼센트, 해시 표시( ) 등의 문자에는 백슬래시가 필요합니다 #
.