为了测试目的,我使用了 的最新版本minted
(从TeX Live
2015 版开始)和TeX Live
2014 版,其中还包含 的 2014 版eledmac
。这两个版本的两个包之间存在冲突,因为minted
需要lineno
定义了一个命令lineref
,而eledmac
从 2014 版开始,它还定义了一个同名的宏。
! LaTeX Error: Command \lineref already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2929 ...dref@undefined{#1}\l@dgetref@num{2}{#1}}
?
由。。。生产
\documentclass{memoir}
\usepackage{minted}
\usepackage{eledmac,eledpar}
\begin{document}
Some text
\end{document}
我猜想,虽然我不确定,它minted
使用lineno
包来打印列表中的行号,而我的测试不需要这个功能。让我使用 2015 版 minted 的功能breaklines
在 2014 版中不存在。查看 github 存储库minted
它的 github 存储库似乎第一个版本介绍breaklines
已经需要lineno
。
有没有简单的方法可以解决此类冲突?我是否应该更改软件包的加载顺序,以便eledmac
加载 -version\lineref
而不是一个lineno
,然后只要输出看起来正常,我就可以忽略错误消息?
答案1
我找到了一个解决方案,可以让它编译时不出错,并且输出乍一看没问题。甚至linenos
minted 选项似乎也可以工作。
\meaning\lineref
显示lineref
的定义与 eledmac 中的一样,这正是我想要的。
\documentclass{memoir}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage{minted}
\let\lineref\relax
\usepackage{eledmac,eledpar}
\begin{document}
\beginnumbering
\autopar
\lipsum[1-2]
\endnumbering
\begin{minted}[linenos,breaklines]{tex}
\documentclass{memoir}
\begin{document}
This is a piece of LaTeX code. I am making it long enough so that it will have to be wrapped.
\end{document}
\end{minted}
\meaning\lineref
\end{document}
\lineref
由于我不完全理解包中的定义lineno
,也不完全理解如何minted
使用它(也不清楚\lineref
在中到底起什么作用eledmac
),因此我谨慎使用它,始终做好出现故障的准备,仅用于测试目的,不用于生产。我总是可以注释掉该let\lineref\relax
行,将目录中的 (2015)minted.sty
文件重命名为其他名称,以便 latex 不再使用它。
我从中得到了一些灵感这个问题。