基本面

基本面

如何在 TeX Live 中正确安装相同 LaTeX 软件包的两个(并行)版本?以 2.8 和 2.9 为例biblatex。我目前在 TL 2013 中安装了其中一个,在 TL 2014 中安装了另一个,并且可以来回比较生成的文件等。...但这不是最佳选择,我现在需要在 TL 2014 中同时安装这两个版本!

答案1

TeX 搜索当前/工作文件夹第一的在搜索其他地方(您的local/texmf或根 TeX 文件夹)之前包含要包含的文件/包。

因此,唯一“有效”地执行此操作的方法是使用工作文件夹来存储两个版本。将一个版本放在名为的文件夹中X,将另一个版本放在名为的文件夹中Y。然后,每次运行 LaTeX 时,您都可以执行脚本将所需版本(XY)复制到您的工作文件夹中(在编译之前或使用编译中期--shell-escape)。

否则,您将只能让 TeX 根据其设置其包/文件哈希表的方式选择符合您要求的第一个包名称,而这可能不是您想要的版本。

答案2

我有相当多的测试/开发/实验/本地版本的软件包,我想暂时与我的 TeXsystems 一起使用。

我总是将这些包放在它们自己的 texmf 树中,然后在需要时将这些 texmf 树附加到 texsystem(s)。

附言:

biblatex 是一种特殊情况:切换 biblatex 版本时,您还必须使用不同的 biber.exe。为了避免与 PATH 变量发生冲突,我将附加的 biber 可执行文件重命名为 biberexp.exe 和 biberdev.exe,并在切换到另一个 biblatex 版本时调用这些可执行文件。

使用 miktex 附加 texmf 树相当简单:我在命令行上运行或通过某些脚本/快捷键initexmf --register-root=path/to/texmf来注册根并将initexmf --unregister-root=path/to/texmf其删除。

使用当前的 texlive(2017、2018),可以使用

 tlmgr conf auxtrees add /quick/test/tree
 tlmgr conf auxtrees remove /quick/test/tree

达到同样的效果。

对于较旧的 texlive 来说,这并不容易。目前我使用的是混合策略:对于 biblatex 包,我更改 TEXMFCNF 使其指向不同的 texmf.cnf,在其他情况下,我手动更改主本地树中的 texmf.cnf,或者我使用 更改 TEXMFHOME tlmgr conf texmf TEXMFHOME=。这一切都不是很令人满意,我想当我有时间的时候,我会编写一个脚本,它可以从我的本地主 texmf.cnf 中添加和删除根,并且可以像 miktex 工具一样使用。(编辑 2018:我编写了这样一个脚本,但由于 texlive 的变化,它不再需要。)

答案3

基本面

这种方法的基本思想依赖于使用完整路径调用可执行文件。也就是说,运行

/usr/local/texlive/2014/bin/x86_64-linux/pdflatex

/usr/local/texlive/2014/bin/x86_64-linux/biber

或者

/usr/local/texlive/2013/bin/x86_64-linux/pdflatex

/usr/local/texlive/2013/bin/x86_64-linux/biber

如果您不需要经常这样做,这可能是最简单的方法 - 只需指定完整路径。或者创建 bash 别名作为快捷方式。

[当然,2013 年或 2014 年大概是您的默认设置,因此您实际上只需要对非默认情况执行此操作。

自动调用相关可执行文件可确保使用适当版本的软件包。也就是说,当您调用 2013 可执行文件时,即使 2014 是您的默认版本,您也会获得 2013 软件包。

更复杂的策略

但是,如果您需要经常这样做,我建议使用一种允许您在文件内部在 2013 年和 2014 年之间切换的方法.tex

这里我解释了如何使用arara通过在文件内切换指令在 TeX Live 2013 和 TeX Live 2014 之间切换.tex。显然,您可以对其他可执行文件执行类似操作。只需复制并调整 中的脚本,就像我对和/usr/local/texlive/2014/texmf-dist/scripts/arara/rules/所做的那样。pdflatexbiber

步骤 1:向文件添加指令

arara这里我只是使用默认提供的标准指令。

% arara: pdflatex
% arara: biber
% arara: pdflatex
\documentclass{article}
\usepackage{filecontents}
\usepackage[backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
  @article{some-article,
    author  =   {Dude, Some},
    title   =   {Some Title},
    year    =   1066,
    journal =   {Some Journal},
    pages   =   {1000456--1005027}}
\end{filecontents}
\bibliography{\jobname}

\begin{document}

  \autocite{some-article}
  \printbibliography

\end{document}

从日志中:

This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex 2014.6.28)  1 JUL 2014 22:31
entering extended mode
...
(/usr/local/texlive/2014/texmf-dist/tex/latex/biblatex/biblatex.sty
Package: biblatex 2014/06/25 v2.9a programmable bibliographies (PK/JW/AB)

来自.bbl

% $ biblatex bbl format version 2.4 $

第 2 步:创建变体 arara 规则

首先在主目录中创建一个配置文件,araraconfig.yaml其内容如下:

!config
paths:
- <arara> @{userhome}/.arara/rules
# vim: set nospell: 

显然,如果您不使用,请省略最后一行vim。此外,如果您希望使用其他方法,请更改规则的路径。例如:

!config
paths:
- <arara> @{userhome}/rules

然后在你的规则目录中创建以下四个文件。例如,我的文件位于其中,~/.arara/rules因为这就是我放在配置文件中的内容。

文件 1

名称:biber2013.yaml
内容:

!config
# Based on Biber rule for arara
# Biber rule author: Marco Daniel
# requires arara 3.0+
identifier: biber2013
name: Biber 2013
command: <arara> /usr/local/texlive/2013/bin/x86_64-linux/biber @{options} "@{getBasename(file)}"
arguments: 
- identifier: options
  flag: <arara> @{parameters.options}
# vim: set nospell: 

文件 2

名称:biber2014.yaml
内容:

!config
# Based on Biber rule for arara
# Biber rule author: Marco Daniel
# requires arara 3.0+
identifier: biber2014
name: Biber 2014
command: <arara> /usr/local/texlive/2014/bin/x86_64-linux/biber @{options} "@{getBasename(file)}"
arguments: 
- identifier: options
  flag: <arara> @{parameters.options}
# vim: set nospell: 

文件 3

名称:pdflatex2013.yaml
内容:

!config
# Based on PDFLaTeX rule for arara
# PDFLaTeX rule author: Marco Daniel
# PDFLaTeX rule last edited by: Paulo Cereda
# requires arara 3.0+
identifier: pdflatex2013
name: PDFLaTeX 2013
command: <arara> /usr/local/texlive/2013/bin/x86_64-linux/pdflatex @{action} @{draft} @{shell} @{synctex} @{options} "@{file}"
arguments:
- identifier: action
  flag: <arara> --interaction=@{parameters.action}
- identifier: shell
  flag: <arara> @{isTrue(parameters.shell,"--shell-escape","--no-shell-escape")}
- identifier: synctex
  flag: <arara> @{isTrue(parameters.synctex,"--synctex=1","--synctex=0")}
- identifier: draft
  flag: <arara> @{isTrue(parameters.draft,"--draftmode")}
- identifier: options
  flag: <arara> @{parameters.options}
# vim: set nospell:

文件 4

名称:pdflatex2014.yaml 内容:

!config
# Based on PDFLaTeX rule for arara
# PDFLaTeX rule author: Marco Daniel
# PDFLaTeX rule last edited by: Paulo Cereda
# requires arara 3.0+
identifier: pdflatex2014
name: PDFLaTeX 2014
command: <arara> /usr/local/texlive/2014/bin/x86_64-linux/pdflatex @{action} @{draft} @{shell} @{synctex} @{options} "@{file}"
arguments:
- identifier: action
  flag: <arara> --interaction=@{parameters.action}
- identifier: shell
  flag: <arara> @{isTrue(parameters.shell,"--shell-escape","--no-shell-escape")}
- identifier: synctex
  flag: <arara> @{isTrue(parameters.synctex,"--synctex=1","--synctex=0")}
- identifier: draft
  flag: <arara> @{isTrue(parameters.draft,"--draftmode")}
- identifier: options
  flag: <arara> @{parameters.options}
# vim: set nospell:

步骤 3:使用新指令

首先,让我们将默认值更改为 2014 指令。除了名称和标识符之外,这些应该基本相同:

% arara: pdflatex2014
% arara: biber2014
% arara: pdflatex2014

从日志中:

This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex 2014.6.28)  1 JUL 2014 22:39
...
(/usr/local/texlive/2014/texmf-dist/tex/latex/biblatex/biblatex.sty
Package: biblatex 2014/06/25 v2.9a programmable bibliographies (PK/JW/AB)

来自.bbl

% $ biblatex bbl format version 2.4 $

现在让我们测试一下2013年的指令:

% arara: pdflatex2013
% arara: biber2013
% arara: pdflatex2013

从日志中:

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013) (format=pdflatex 2014.4.9)  1 JUL 2014 22:42
entering extended mode
...
(/usr/local/texlive/2013/texmf-dist/tex/latex/biblatex/biblatex.sty
Package: biblatex 2013/11/25 v2.8a programmable bibliographies (PK/JW/AB)

来自.bbl

% $ biblatex bbl format version 2.3 $

相关内容