版本依赖包冲突

版本依赖包冲突

为了测试目的,我使用了 的最新版本minted(从TeX Live2015 版开始)和TeX Live2014 版,其中还包含 的 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

我找到了一个解决方案,可以让它编译时不出错,并且输出乍一看没问题。甚至linenosminted 选项似乎也可以工作。 \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 不再使用它。

我从中得到了一些灵​​感这个问题

相关内容