我如何才能平衡样式文件的统一性和模块化?

我如何才能平衡样式文件的统一性和模块化?

我使用的是 Windows/TeXworks/MiKTeX,我希望有一个样式文件,可以在我的顶级文件夹中的任何文档中的任何位置使用。如果我想添加新命令或更新旧命令,我希望它可以在顶级文件夹中递归包含的所有文档中可用。我的顶级文件夹具有非常分层的结构。因此,这似乎指向拥有一个 TeXworks 知道的单个文件。我可以在“首选项”->“排版”->“TeX 和相关程序的路径”中添加路径吗?我尝试过,可能只是表面上,没有任何成功。将正确的文件夹添加到 Windows PATH 变量似乎也不起作用。

另一方面,假设我想向某人发送一个 TeX 文件?在这种情况下,最好能够将样式文件与 TeX 文件放在同一个文件夹中。如果我这样做,我如何确保它始终是最新的?是否有可用的脚本可以将我的主样式文件推送到所有预先存在的较低级别位置?

重申一下:我希望我的样式文件在层级结构非常复杂的文件夹中保持一致。但是,我也希望模块化,这样每个文件夹都是独立的。我该如何实现呢?

另外,出于好奇,由于我可能很快就会买一台 Linux 电脑,我该如何在 *ubuntu 中使用 TeXlive 来做到这一点?

答案1

如果出现以下任一种情况(或两种情况均出现):---

  1. [可移植性问题] examplestyle.sty= 原始问题中描述的文件:即.sty通常可用并由几个正在进行的项目使用的个人文件(例如,在TEXMFHOMEMikTeX 喜欢放置它的地方或不太方便的地方);
  2. [长期稳定性问题] 使用正在积极开发中的软件包,更令人担忧的是,将来可能不向后兼容(例如tabu)。

--- 辅助程序bundledocarlatex解决您的问题。 arlatex最容易使用,最适合解决模块化问题。 bundledoc也可以用作解决方案,并且更有利于长期稳定性。更好的是,两者可以结合成一站式解决方案,解决短期和长期的所有可移植性问题。事实上,我现在正在归档我的旧项目,因为我看到了它的强大功能。(+1,然后是这个问题让我更仔细地研究这些程序!!)

捆绑文档

一个解决方案是使用捆绑文档当项目完成时,你不想担心丢失“当前”的定义examplestyle.sty

就是这样:

% Example projectfile.tex
\RequirePackage{snapshot}% <-- this *must* be used!
\documentclass{article}
\usepackage{examplestyle,lipsum}
\begin{document}
\lipsum
\end{document}

运行latex projectfile.tex(或lualatex等)。除了通常的许多文件之外,这还会创建一个名为 的文件,projectfile.dep该文件将用于对创建 或 时使用的所有文件(最多!)进行.dvi快照.pdf

(以下内容更多地针对 GNU/Linux,但类似 ​​[但不完全相同] 的原则也适用于 Windows/MikTeX 设置。请参阅手册页:man bundledoc。)

要创建捆绑档案,您可以执行以下操作:

bundledoc --config=texlive-unix.cfg --verbose projectfile.dep

(比较其他配置文件,miktex.cfg。)

这应该会创建一个名为的文件projectfile.tar.gz,其中将包含从article.cls您的个人资料到所有内容examplestyle.sty

请注意包含或排除材料的有用选项:

--localonly # only includes files in the current .tex directory
--include=  # e.g., --include="*.bib" includes all .bib files, even if not used in the actual .tex file
--exclude=  # e.g., --exclude=.cfg excludes all .cfg files

阿拉泰克

另一个(相关)解决方案是使用阿拉泰克斯。此脚本的目的是将辅助文件归档到主.tex文件中。换句话说,它允许您将个人sty文件嵌入到项目文件中,从而实现完全模块化(例如,可以将文件发送给其他人,而不必担心他们可能拥有您的个人文件的过时版本.sty)以及在系统或用户范围内安装文件的常规“全局”特性.sty

arlatex使用起来很简单(以下假设bash,但man page也为 Windows 提供了一些提示)。假设examplestyle.sty仍安装在~/texmf/tex/latex,并且 需要projectfile.tex,当您想.sty在 中嵌入 时,projectfile.tex您可以这样做(但使用更好的文件名):

arlatex --outfile=projectfile-with-examplestyle.tex --document=projectfile.tex $(kpsewhich examplefile.sty) projectfile.tex

这将创建一个具有(荒谬的)名称的新文件projectfile-with-examplestyle.sty,其中包括通过文件内容在原始projectfile.tex环境中filecontents包含 的精确副本examplestyle.sty。此新文件与原始文件完全相同。

Arlatex + Bundledoc

最后,arlatexbundledoc被设计为一起使用,因此可以将两者结合起来并创建由超级文件组成的存档文件arlatex。然而,这样的文件应该通过或更好的方式压缩gzip,因为即使是.tex使用类似软件包的小文件fontspec也会增长到超过 2 MB。

以下是将和一起.cfg使用的可能方法。假设您已按照前面的步骤创建了。将此文件命名为arlatexbundledocprojectfile.deparlatex+bundledoc.cfg

# basic config file for use of arlatex + bundledoc
bundle: (arlatex --document=$BDBASE.tex $BDINPUTS | tar -cvf - $BDINPUTS | gzip --best > $BDBASE-all.tar.gz )
sink:   > /dev/null 2>&1
find:   kpsewhich -progname=latex $BDINPUTS

然后,您可以按照上述相同的方式使用此配置文件,但使用arlatex+bundledoc.cfg作为.cfg文件。这将创建一个文件,在我们的例子中,projectfile-all.tar.gz它使用filecontents写入全部将使用的包和类本身(!)保存到单个存档文件夹中。(它将大小从大约 2 MB 减小到 389 kB。)现在您就可以开始了,无论是今天还是几年后。

相关内容