我当前的问题

我当前的问题

我当前的问题

我有一个名为的自定义环境revisions,它使用 soul 以可定制的方式强调所有内容(请参阅上下文为什么),使用 Environ 定义。当我\parencite在此环境中使用时,出现以下错误(直接从 vim 面板复制)。我做错了什么,如何才能让它工作?

essay.tex|22 warning| LaTeX Warning: Citation '{McTaggart1908}' on page 0 undefined on input line 22.
essay.tex|22 error| Argument of \blx@citeargs@iii has an extra }.
essay.tex|22 error| Paragraph ended before \blx@citeargs@iii was complete.
essay.tex|22 error| You can't use `end-group character }' after \the.
essay.tex|22 error| TeX capacity exceeded, sorry [main memory size=5000000]. ...}{}{}{\endgroup \blxcitecmd {parenci
essay.tex|22 error| ==> Fatal error occurred, no output PDF file produced!
|| [37] Utils.pm:209> ERROR - .auxfiles/essay.bcf is malformed, last biblatex run probably failed. Deleted .auxfiles/essay.bbl

一个最小的工作示例:

\documentclass{article}

\usepackage{environ}
\usepackage{soul}

\usepackage{biblatex}

\addbibresource{~/University/bibliography.bib}

\NewEnviron{revision}{\expandafter\ul\expandafter{\BODY}}

\title{Some Title}
\author{}
\date{}

\begin{document} 

\begin{revision}
\parencite[10]{McTaggart1908}
\end{revision}

\end{document}

语境

我之所以在帖子中提到这一点,是因为我可能绕了大弯路,实际上有一种更简单的方法可以解决整个问题,完全避免上述问题。它也可能很有用。我欢迎所有想法。

我是一名学生,我主要使用 LaTeX 来写论文。我的大学要求在每篇论文的第二个修订版本中,所有修订和编辑都用下划线标出。最初(本着所见即所得的精神),我只有一个命令\rev

\newcommand{\rev}[1]{\ul{#1}}

但是当我在里面使用它时,它引发了与上面类似的错误\parencite。我对 LaTeX 了解不多,但我认为也许“正确”的方法(也是 LaTeX 处理的方式)是作为环境,因此有了上面的内容。但这仍然不起作用!

答案1

使用 lualatex 和 lua-ul(这需要当前的 tex 系统!)您的示例可以毫无问题地进行编译:

\documentclass{article}

\usepackage[soul]{lua-ul}

\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\newcommand{\rev}[1]{\ul{#1}}
\begin{document}
\rev{\parencite[10]{doody}}
\end{document}

在此处输入图片描述

答案2

这不是 的问题environ,而是 的问题soul。你可以试试

\ul{\parencite{McTaggart1908}}

你还会遇到同样的问题。

解决方案:使用\mbox。我filecontents*只是想让示例自成一体。

\begin{filecontents*}{\jobname.bib}
@article{McTaggart1908,
  author={X. McTaggart},
  title={Title},
  journal={Journal},
  year={1908},
}
\end{filecontents*}

\documentclass{article}
\usepackage{environ}
\usepackage{soul}

\usepackage{biblatex}

\addbibresource{\jobname.bib}

\NewEnviron{revision}{\expandafter\ul\expandafter{\BODY}}

\title{Some Title}
\author{}
\date{}

\begin{document}

\ul{\mbox{\parencite[10]{McTaggart1908}}}

\begin{revision}
\mbox{\parencite[10]{McTaggart1908}}
\end{revision}

\end{document}

相关内容