引用と変更の競合

引用と変更の競合

科学論文の出版にあたり、査読者のコメントを考慮した論文の修正版を書いています。どの修正がどの査読者によるものかを特定する必要があるため、パッケージを使用しますchanges。当然、論文には参考文献があるので、パッケージを使用しますcite

PDFLaTeX (TexLive 2014) では、パッケージのコマンドまたはコマンドcite内で コマンドを使用するとエラーが発生します。以下に最小限の動作例を示します。deletedreplacedchanges

\documentclass{article}

\usepackage{cite}
\usepackage{changes}

\begin{document}

As previously observed \deleted{in \cite{someref}, there is no banana here.}

\begin{thebibliography}{9}
\bibitem{someref} 
Some ref here.
\end{thebibliography}

\end{document}

次のエラーが発生します:

! Extra }, or forgotten \endgroup.
\UL@stop ...alty \ifnum \lastkern =\thr@@ \egroup
\egroup \ifdim \wd \UL@box...
l.8 ...n \cite{someref}, there is no banana here.}


! Extra }, or forgotten \endgroup.
\UL@stop ...num \lastkern =\thr@@ \egroup \egroup
\ifdim \wd \UL@box =\z@ \e...
l.8 ...n \cite{someref}, there is no banana here.}


! Missing } inserted.
<inserted text>
}
l.8 ...n \cite{someref}, there is no banana here.}


! Missing } inserted.
<inserted text>
}
l.8 ...n \cite{someref}, there is no banana here.}

パッケージを削除するとcite、すべてが正常に戻ります。残念ながら、このパッケージが必要です。

この質問は、この未回答のもの。 どうすればいいですか?

答え1

daleif がコメントで指摘したように、この問題は、パッケージulem内の削除された変更を打つために使用されるパッケージが原因ですchanges。一部のコマンドに対して奇妙な動作をすることが知られていますcite

に示されているようにドキュメンテーションcite、次のように で囲む必要がありますmbox

As previously observed \deleted{in \mbox{\cite{someref}}, there is no banana here.}

そしてそれは機能します。

非常に似た問題が同じ方法で解決されたここ

答え2

@Nerasteは正しいことを言いました。私も同じ問題を発見し、\mbox{\cite{someref}}あらゆる参照で回避したいと思いました....だから、これ、私は以下を使用しました:

\let\oldcitep\citep
\renewcommand{\citep}[1]{\mbox{\oldcitep{#1}}}
\let\oldcitet\citet
\renewcommand{\citet}[1]{\mbox{\oldcitet{#1}}}
\let\oldcite\cite
\renewcommand{\cite}[1]{\mbox{\oldcite{#1}}}

完璧に機能しました

答え3

\mbox私には効果がありませんでした。

\citeただし、 withinコマンド\removeまたはtrack changes コマンドの使用時に LaTeX がクラッシュする問題を回避する、ある程度満足のいく方法があります\add。この回避策では、参照が表示されないように無視するだけです。

以下は、LaTeX ドキュメントの上部で使用したコマンドです。

\usepackage[ignoremode,inline]{trackchanges} % use the "ignoremode" option here

\tcignore{\cite}{1}{0}  % To ignore parenthetical citation (previously used to be \citep)

\tcignore{\citeA}{1}{0} % To ignore in-text citation (previously used to be \citet)

それは私にとってはうまくいきました。

関連情報