LaTeX 的元语言

LaTeX 的元语言

每当我编写 TeX/LaTeX 文档时,我总是觉得很烦人,因为我无法真正专注于内容,这并不是说我不喜欢 TeX 或它为我所做的事情,而只是文档很快变得过于冗长。

我正在考虑采用一种中间语法,一种更“干燥”的语法,它可以帮助我专注于内容,并且只在稍后的过程中使用 LaTeX 来创建布局和分页的最后部分。

到目前为止,我已经能够识别rst ( reStructuredText )docbook,不用说,我对这两者都没有经验,但在寻求您的帮助时我有几个要求:

  • 支持数学公式
  • 支持包含外部资源,如代码片段或图像(大部分为矢量图像)

采用这种“干”解决方案时,我想要编写的文档大部分是小书和文章,因此很多时候我需要将内容分成章节或段落,并且我希望有一个模块化和灵活的解决方案。

答案1

我可以建议Pandoc-markdown使用 Pandoc。

Pandoc-markdown 是一种 markdown 格式(没有比它更简单或更紧凑的了),带有一系列扩展,其中包括表格、TeX-math、原始 TeX 等等。

使用 Pandoc,您可以将 markdown 文档转换为 LaTeX 或直接转换为 PDF,并使用基于命令行参数的简单系统控制转换。

此外,您可以通过简单的模板系统获得对转换的良好细粒度控制。

我不是计算机专家,但我可以说在阅读 Pandoc 文档三十分钟后,我已经为 Pandoc 编写了自己的 LaTeX 模板,并且正在用 Pandoc-markdown 编写一系列技术文档。

值得一看。

答案2

reStructuredText、SDF(简单文档解析器)或类似工具的问题在于,它们允许处理可导出为 LaTeX 的简单 markdown 文本,但迟早你会被限制在基本格式(列表、引文、章节、逐字文本……)。如果这就是你所需要的,那就完美了,否则就是一场噩梦。

假设您有一个 reStructuredText,它生成的 LaTeX 文件并非 100% 完美,您必须对其进行编辑才能获得最终格式。之后,您想更新文档。现在该怎么办?修改源文件意味着在 LaTeX 文件中付出的努力付诸东流。编辑 LaTeX 以保留这些更改意味着源文件已过时...

因此,对于必须更新的复杂 LaTeX 文档,我的建议是直接在 LaTeX 中工作,但为了不被 LaTeX 命令分散注意力,请遵循以下建议:

  • 用纯文本编写整个文档,完成后再将其转换为 LaTeX 文档。然后才需要担心外观和感觉(图形、交叉引用、孤立行、间距等)

  • 格式化干净的源。

     Some text
    
    \section{Title} 
    
    This is a text
    

    对于 LaTeX 编译器来说,情况完全相同:

    Some text \section{Title} This is a text

    但这种方式显然对人类来说可读性较差。

在表格等部分,只需添加一些空格来对齐列即可大大提高可读性,这对于检测代码错误(&例如丢失)也很重要。简单的缩进可以大大改善嵌套列表等。

  • 尽量简单。保持你的样式格式尽可能接近类和基本包的默认值。

    考虑一些类似的东西:

    \section{Title}(毫无疑问。这里开始一个名为“标题”的部分)

    相对

    \section{\sffamily\textcolor{blue!60!black}{\textbf{\Large Title}}}(这句话到底什么意思?)

第一种更好,不仅因为您将只看到结构命令,它更具信息性而不是侵入性。默认值可能也比您的选择更优雅。如果您确实需要为您的章节标题提供不同的“外观”,请考虑更改类(例如从 到articlepaper或更改默认值的类的适当命令或一些包 todo 类似titlesec,这样您的所有修改都在序言中的几行中,文本之间没有大量难以辨认的代码。

  • 使用宏来简化格式化代码。将所有复杂的命令序列保留在序言中。例如,如果您想以这种奇特的方式突出显示某些单词:

    \textcolor{blue!60!black}{\textbf{\emph{{word}}}}

    那么最好\myhl在序言中制作宏:

    \newcommand\myhl[1]{\textcolor{blue!60!black}{\textbf{\emph{{#1}}}}}

    因此您只需要\myhl{word}在文本中书写即可。

  • 经常使用\input\include。对于论文和书籍,通常的做法是将每一章保存在单独的文件中并与 混合\include{file}。但是,如果一个章节或一篇简单的文章在段落之间有多个表格和图形浮点数,仍然很难编辑。但您可以将这些浮点数放在单独的文件中,并使用 包含\input{file}。使用精心挑选的名称,这个命令还会更具信息性而不是侵扰性。甚至您也可以对整个序言这样做。对于任何您不想在编辑时与 LaTeX 命令混合的纯文本块也是如此。这样,不仅主文件和子文件更具可读性。而且更安全,因为您不会意外编辑未在处理的部分。并且找到要编辑的部分也更容易。

  • 对于人类来说,最令人讨厌的常用 LaTeX 命令之一是列表环境。格式良好的简单列表易于阅读,但如果没有 PDF 预览,则很难理解具有多个级别的嵌套列表。幸运的是,您可以简化逐项命令排版无需使用 LaTeX 之外的 markdown 语言。

  • 最后,如果连最常见、最简单的结构命令都让你感到困扰,请使用免费且免费的编辑器 LyX,它是 WYSIWYM(所见即所得)。在这里,你不会局限于使用 markdown 语言,因为 LyX 结束的地方,你可以在 ERT(邪恶的红色文本)框中添加 LaTeX 命令,如果这些框太分散你的注意力,你可以随时关闭它们。另一个选择可能是所见即所得编辑器 BaKoMa(既不免费也不免费)。

答案3

或许

就是你要找的。

答案4

您可以使用解释器包可根据您的喜好简化输入语法。该包需要 LuaLaTeX,但可让您轻松定义诸如\section\textbf等内容的有效语法。

数学格式可以保留传统的 TeX 语法。

相关内容