引用文付き構文パッケージを使用する場合の不完全な \iffalse

引用文付き構文パッケージを使用する場合の不完全な \iffalse

理由は分かりませんが、以下の最小化されたLaTeXコードは

(/opt/local/share/texmf-texlive/tex/latex/mdwtools/syntax.sty) (./text.aux)) ! 不完全です \iffalse; 12 行目以降のテキストはすべて無視されました。

pdflatex によるエラー。これは、構文パッケージを追加しようとしたときに問題が発生した私のドキュメントから派生したものです。

\documentclass[a4paper,fontsize=12pt,parskip=half,toc=listofnumbered,toc=bib]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}


\usepackage{syntax}

\begin{document}

\begin{quotation}
As a rule of thumb, if you can tell which computer you are using, you are not using a distributed system.
\end{quotation} from \cite{DOS_Tanenbaum}

\end{document}

\cite を削除すると PDF が生成されるため、何らかの形で bibtex に干渉しているようです。

答え1

最も簡単な解決策は、 を実行することです\usepackage[nounderscore]{syntax}。ただし、ラベルや引用での使用法を修正することができます。

\documentclass{article}

\usepackage{syntax}

\makeatletter
\def\@uscore.{%
  \ifmmode
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  \sb
  {\@usc@re}%
}
\def\@usc@re{%
  \ifincsname
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {\string_}%
  {\textunderscore\@ifnextchar_{}{\usc@builtindischyphen}}%
}
\if@uscore
  \AtBeginDocument{%
    \catcode`\_\active%
    \begingroup%
    \lccode`\~`\_%
    \lowercase{\endgroup\protected\def~{\@uscore.}}%
  }
\fi


\begin{document}

This is an underscore ``_''; also \cite{DOS_Tanenbaum} and $a_1$

\end{document}

ここに画像の説明を入力してください

関連情報