%3F.png)
Utilizo la siguiente línea para escribir en el PDF el nombre del repositorio git con el código fuente del documento:
\input|"git config --get remote.origin.url | xargs basename"
Tengo un problema con un repositorio con un guión bajo en el nombre, por ejemplo repo_name
, ya que el carácter especial hace que mi compilador cambie al modo matemático.
Probablemente podría usar el \catcode
como se muestra en elotra respuesta, pero no es sólo el guión bajo lo que puede causar problemas, y preferiría hacerlo robusto contra todos los caracteres especiales que puedan aparecer en los nombres de los directorios.
Respuesta1
Puedes usar catchfile
:
\documentclass{article}
\usepackage{catchfile}
\begin{document}
\CatchFileDef\repository{|"kpsewhich eng_rs.sty | xargs basename"}{\catcode`_=12 }
\texttt{\repository}
\texttt{\meaning\repository}
\end{document}
Utilicé un nombre de archivo con un guión bajo, sólo a modo de ejemplo.
Una versión posiblemente mejor, con 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}
He creado dos archivos a%b.tex
y a_x%y.tex
solo para mostrar el uso del primer argumento opcional. Se necesita una barra invertida para caracteres como barra invertida, porcentaje y marca de almohadilla ( #
).