使用更短的命令缩写命令,可从主体启动

使用更短的命令缩写命令,可从主体启动

我有一个相当复杂的命令,让我们在序言中将其称为“C”,这是一个改变文档外观的长文档。

如果我在文档中间某处写文本,我希望避免总是滚动到顶部,取消注释命令,然后滚动回来再编译,以查看启用“C”时文档的外观,然后撤消所有操作以查看禁用“C”时文档的外观。我希望有一个更快的解决方法。

以下内容会有所帮助:是否可以定义一个新的简短命令,例如\activate我可以将其放置在 LaTeX 文档正文的任何​​位置,它将以某种方式激活序言中的命令,这样我就可以\activate在文档中间写文本时快速输入,然后编译并再次删除\activate以查看没有它时它是什么样子。
这已经为我节省了大量时间,我现在花在滚动文档上。

答案1

这是一个可以涵盖大多数情况的解决方案。

首先,我定义\C将设置\parindent为 0 以进行测试。然后,基本思想是\C使用标准接口命令将执行延迟到文档开始\AtBeginDocument。在其中进行条件测试。当\ifC设置为 true 时,它​​将实际执行\C,如果为 false,则放宽。现在,您想在文档中间控制执行。这就是为什么\activate将写入\Ctrue主辅助文件的原因。(它会被加载begin-document 钩子被调用了!)由此可见,您需要编译两次才能看到更改。

\documentclass{article}
\usepackage{lipsum}

\def\C{\parindent0pt}

\newif\ifC
\AtBeginDocument{\ifC\C\fi}
\makeatletter
\def\activate{%
  \@bsphack
  \if@filesw
    \immediate\write\@mainaux{\string\global\string\Ctrue}\fi
  \@esphack
}
\makeatother

\begin{document}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

\activate

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 

Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. 
\end{document}

要自动执行两次编译文档的过程,您可以使用arara。它非常方便且易于使用:

% arara: pdflatex
% arara: pdflatex

\documentclass{article}
\usepackage{lipsum}

\def\C{\parindent0pt}

...

您将通过arara filename.tex而不是来编译此文件pdflatex filename.tex。要了解更多信息,您可以查看其github 存储库或其CTAN 条目你可以下载安装程序最新版本(v3.0)。

答案2

\newif\ifC
\def\C{\ifC{your definition of C} \else \fi}

现在您激活命令设置\Ctrue并停用设置\Cfalse

相关内容