预处理 Latex:您的工作流程是什么?使用什么工具?

预处理 Latex:您的工作流程是什么?使用什么工具?

我知道,由于各种原因,一些用户使用Perlsed来预处理他们的乳胶文件。

我也正在考虑这样做,因此我想寻求您的指导,以便我能够顺利进入这个领域。

我的用例是简单的宏扩展预处理

If $\ep$ is small...   -->  If $\epsilon$ is small...

这样编译会话就变成了

doc.tex  --preprocessor-->  post.tex  --pdftex--> post.pdf

并出现以下问题

  1. doc.tex和中的行号通常不匹配post.tex。因此pdftex错误消息指向 中的行post.tex。但实际上,人们想要 中的行号doc.tex

  2. 同理synctex。向后和向前搜索都是关于 的post.tex。但是,人们实际上希望它们是关于 的doc.tex

  3. doc.tex有时,人们想在和之间来回切换post.texpreprocessor知道两个文档的行之间的对应关系。但是,如何以可行的方式表达这些知识呢?我的意思是,文本编辑器没有为这些前后切换提供现成的支持。

那么,您是否知道一些可以平整(1)-(3)的软件、工作流程或技术?

我环顾四周,但只能找到示例Perlsed预处理脚本。

我从未在某处看到过有关工作流程问题的讨论。

编辑

线路不匹配可能源于大的扩张

A function is continuous if
    \multiline_continuity_definition_I_often_use
Hence ... 

定义扩展为

\begin{description}

   \item[Standard] 
        $\forall \epsilon ... $

    \item[Nonstandard]
        $x \approx y ... $

\end{description}

编辑2

本题重点讨论预处理技术。

我的例子非常简单,但我希望它们能够抓住预处理环节的主要挑战。

答案1

据我所知,这个问题没有完整的解决方案,因为它会根据您的需求而变化。

但是这里有两个提示,在大多数情况下可以排除你的三个问题:

尽可能使用 LaTeX

你的第一个例子可以很容易地通过

\newcommand{\ep}{\epsilon}

第二个

\newcommand{\multiline_continuity_definition_I_often_use}{% You might prefer a shorter name :)
\begin{description}

   \item[Standard] 
        $\forall \epsilon ... $

    \item[Nonstandard]
        $x \approx y ... $

\end{description}
}

关键点是要避免shadok逻辑,即“不要浪费时间开发你并不真正需要的工具”。即使这个工具看起来很漂亮。

尝试区分文档中的内容和不包含的内容

这是针对需要预处理器的“真实”示例。通常,这是因为它们涉及动态数据(如果您需要始终执行完全相同的操作,则 latex 应该足够)和复杂的计算/处理。

然后,您可以做的是将这个动态部分从文档中分离出来。例如,\input一个文件只包含需要预处理的部分。然后预处理文档(\input例如,遵循这些,或者简单地根据扩展名过滤辅助文件),并编译。

Latex 可以以文件行错误样式输出错误,这样行号就不会乱了。如果您使用的是支持多文件的编辑器(例如)emacs + AUCTeX + refTeX,这几乎可以透明地实现。

关于 synctex,它也不会引起任何问题。至于基础文档和处理文档之间的来回切换...嗯,因为你只更改了小的辅助文件,所以应该没有问题。

这个工作流程的一个很好的例子就是sagetex软件包。它允许用户使用符号计算软件进行一些计算sage,并将其结果直接排版在.pdf文档中。

它使用一些后期处理使其对用户更加透明,但想法是一样的:

  1. 用户在.tex文件中输入计算结果(使用一些命令)
  2. 第一次运行pdflatex提取文件中的所有这些sagedocument.sage
  3. sage该文件的运行将创建document.sageout包含结果的文件。
  4. 第二次运行将pdflatex这些结果插入到最终文档中。

它是一个完全开发的软件包,经过认真优化以方便用户使用,但您不需要如此精心设计的解决方案。例如,您可以手动创建额外的文件(借助编辑器,只需键入\input{filename}并按下几个键即可)。

再说一次,这不是一个完整的解决方案,您可能需要做一些工作来找出真正适合您需求的东西......把它当作您的工作流程的提示,仅此而已。

相关内容