Estoy escribiendo un documento en el que quiero incluir algunas imágenes vía graphicx
y \includegraphics
mostrar algunas gramáticas BNF usando el syntax
paquete de mdwtools
, sin embargo, recibo un error deundefined control sequence
cuando intento usarlas juntas.con algunos nombres de archivos.
Un ejemplo mínimo que falla:
\documentclass{article}
\usepackage{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{logo_uniud_black}
\end{document}
Al compilar esto me sale el siguiente error:
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg))
! Undefined control sequence.
\filename@simple ...#2\\}\fi \edef \filename@base
{#1}
l.8 \includegraphics{logo_uniud_black}
[omissis]
! Undefined control sequence.
\filename@simple ...#2\\}\fi \edef \filename@base
{#1}
l.8 \includegraphics{logo_uniud_black}
(That makes 100 errors; please try again.)
Comentar \usepackage{syntax}
soluciona el problema. También funciona el uso de un nombre de archivo que no contenga guión bajo, para que este código no falle:
\documentclass{article}
\usepackage{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{logouniudblack}
\end{document}
¿Por qué aparece este error y cómo se relaciona con el guión bajo en el nombre del archivo? ¿Hay alguna manera de solucionarlo sin cambiar el nombre de todos los archivos que debo incluir?
Editar:
En realidad, parece que incluso los nombres de secciones con guión bajo crean problemas, por lo que \include
generan errores similares, por ejemplo con la fuente:
\documentclass{article}
\usepackage{syntax}
\begin{document}
\include{sintassi_astratta}
\end{document}
Recibo estos errores:
(/usr/share/texlive/texmf-dist/tex/latex/mdwtools/syntax.sty) (./bad_doc.aux)
! Undefined control sequence.
\GenericError ...
#4 \errhelp \@err@ ...
l.7 \include{sintassi_astratta}
! Undefined control sequence.
\GenericError ...
\let \@err@ ...
l.7 \include{sintassi_astratta}
! Undefined control sequence.
\GenericError ...
\@empty \def \MessageBreak...
l.7 \include{sintassi_astratta}
! Undefined control sequence.
\GenericError ...
\endgroup
l.7 \include{sintassi_astratta}
! Argument of \reserved@b has an extra }.
<inserted text>
\par
l.7 \include{sintassi_astratta}
Runaway argument?
{\usc@builtindischyphen }\futurelet \@let@token \@ifnch astratta.aux
! Paragraph ended before \reserved@b was complete.
<to be read again>
\par
l.7 \include{sintassi_astratta}
(./sintassi.tex)
! Missing control sequence inserted.
<inserted text>
\inaccessible
l.7 \include{sintassi_astratta}
! Too many }'s.
\@filef@und ...\@let@token \let \discretionary {-}
{}{}\discretionary {-}{}{}...
l.7 \include{sintassi_astratta}
[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./sintassi.tex)
Runaway text?
\@setckpt{sintassi\protect \unhbox \voidb@x \kern .06em\vbox {\hrule \ETC.
! File ended while scanning text of \write.
<inserted text>
}
l.7 \include{sintassi_astratta}
! Unbalanced write command.
<write> ... \@setckpt {sintassi_astratta}\@charlb
l.7 \include{sintassi_astratta}
(./bad_doc.aux
Runaway argument?
{sintassi\protect \global \let \OT 1\textunderscore \unhbox \voidb@x \ETC.
! Paragraph ended before \@input was complete.
<to be read again>
\par
l.5
! Missing { inserted.
l.7 ...or immediate help \endgroup {}\def \par }
)
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
! Missing } inserted.
<inserted text>
}
l.9 \end{document}
! Missing } inserted.
<inserted text>
}
l.9 \end{document}
! Extra \endgroup.
<recently read> \endgroup
l.9 \end{document}
)
Si no me equivoco en lugar de buscar sintassi_astratta.tex
es buscar sintassi.tex
. Parece que syntax
se está redefiniendo el guión bajo de alguna manera que lo rompe todo.
Respuesta1
El syntax
paquete tiene una nounderscore
opción; luego deberá usarlo \_
para nombres compuestos.
Si prefiere tener _
significado \_
fuera del modo matemático, utilice
\input{\detokenize{file_name}}
y de manera similar para \include
o \includegraphics
. Entonces
\documentclass{article}
\usepackage[nounderscore]{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{logo_uniud_black}
\end{document}
funcionará tan bien como
\documentclass{article}
\usepackage{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{\detokenize{logo_uniud_black}}
\end{document}
Respuesta2
utilizar \string_
para un guión bajo
\includegraphics{/tmp/logo\string_uniud\string_black}