graphicx
를 통해 이미지를 포함 하고 패키지를 \includegraphics
사용하여 BNF 문법을 표시하려는 문서를 작성 중입니다. 하지만 함께 사용하려고 하면 오류가 발생합니다.syntax
mdwtools
undefined control sequence
일부 파일 이름.
실패한 최소한의 예:
\documentclass{article}
\usepackage{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{logo_uniud_black}
\end{document}
이것을 컴파일하면 다음과 같은 오류가 발생합니다.
(/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.)
주석을 달면 \usepackage{syntax}
문제가 해결됩니다. 또한 밑줄이 포함되지 않은 파일 이름을 사용하면 이 코드가 실패하지 않습니다.
\documentclass{article}
\usepackage{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{logouniudblack}
\end{document}
이 오류가 발생하는 이유는 무엇이며 파일 이름의 밑줄과 어떤 관련이 있습니까? 포함해야 하는 모든 파일의 이름을 바꾸지 않고 문제를 해결할 수 있는 방법이 있나요?
편집하다:
실제로 밑줄이 있는 섹션 이름도 문제를 일으키는 것처럼 보이므로 \include
예를 들어 소스에서 유사한 오류가 발생합니다.
\documentclass{article}
\usepackage{syntax}
\begin{document}
\include{sintassi_astratta}
\end{document}
다음과 같은 오류가 발생합니다.
(/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}
)
내가 착각하지 않았다면 찾는 대신 sintassi_astratta.tex
찾는 것입니다 sintassi.tex
. syntax
모든 것을 깨뜨리는 방식으로 밑줄을 재정의하는 것 같습니다 .
답변1
패키지 에는 옵션이 syntax
있습니다 nounderscore
. 그런 다음 \_
복합 이름에 사용해야 합니다 .
수학 모드 이외의 _
의미를 갖고 싶다면 다음을 사용하세요.\_
\input{\detokenize{file_name}}
\include
또는 에 대해서도 마찬가지입니다 \includegraphics
. 그래서
\documentclass{article}
\usepackage[nounderscore]{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{logo_uniud_black}
\end{document}
뿐만 아니라 작동합니다
\documentclass{article}
\usepackage{syntax}
\usepackage{graphicx}
\begin{document}
\includegraphics{\detokenize{logo_uniud_black}}
\end{document}
답변2
\string_
밑줄에 사용
\includegraphics{/tmp/logo\string_uniud\string_black}