Schlechte Interaktion zwischen dem Syntaxpaket von mdwtools und graphicx

Schlechte Interaktion zwischen dem Syntaxpaket von mdwtools und graphicx

Ich schreibe ein Dokument, in dem ich sowohl einige Bilder über graphicx's einbinden \includegraphicsals auch einige BNF-Grammatiken mit dem syntaxPaket von anzeigen möchte mdwtools, jedoch erhalte ich eine Fehlermeldung, undefined control sequencewenn ich versuche, sie zusammen zu verwenden.mit einigen Dateinamen.

Ein Minimalbeispiel, das fehlschlägt:

\documentclass{article}

\usepackage{syntax}
\usepackage{graphicx}

\begin{document}

\includegraphics{logo_uniud_black}

\end{document}

Beim Kompilieren erhalte ich die folgende Fehlermeldung:

(/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.)

Das Auskommentieren \usepackage{syntax}behebt das Problem. Auch die Verwendung eines Dateinamens, der keinen Unterstrich enthält, funktioniert, sodass dieser Code nicht fehlschlägt:

\documentclass{article}

\usepackage{syntax}
\usepackage{graphicx}

\begin{document}

\includegraphics{logouniudblack}

\end{document}

Warum erhalte ich diesen Fehler und was hat er mit dem Unterstrich im Dateinamen zu tun? Gibt es eine Möglichkeit, ihn zu beheben, ohne alle einzubindenden Dateien umzubenennen?


Bearbeiten:

Tatsächlich scheinen sogar Abschnittsnamen mit Unterstrichen Probleme zu verursachen, sodass \includeähnliche Fehler auftreten, beispielsweise bei der Quelle:

\documentclass{article}

\usepackage{syntax}

\begin{document}

\include{sintassi_astratta}

\end{document}

Ich erhalte folgende Fehler:

(/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}

 )

Wenn ich mich nicht irre, wird statt sintassi_astratta.texnach gesucht nach sintassi.tex. Es scheint, als syntaxwürde der Unterstrich auf eine Art neu definiert, die alles kaputt macht.

Antwort1

Das syntaxPaket verfügt über eine Option, die Sie dann für zusammengesetzte Namen nounderscoreverwenden müssen .\_

_Wenn Sie eine Bedeutung \_außerhalb des Mathematikmodus bevorzugen , verwenden Sie

\input{\detokenize{file_name}}

und ebenso für \includeoder \includegraphics. Also

\documentclass{article}

\usepackage[nounderscore]{syntax}
\usepackage{graphicx}

\begin{document}

\includegraphics{logo_uniud_black}

\end{document}

wird genauso gut funktionieren wie

\documentclass{article}

\usepackage{syntax}
\usepackage{graphicx}

\begin{document}

\includegraphics{\detokenize{logo_uniud_black}}

\end{document}

Antwort2

\string_für einen Unterstrich verwenden

\includegraphics{/tmp/logo\string_uniud\string_black}

verwandte Informationen