对于简单的文档,我喜欢使用 markdown/restructuredtext 并将其转换为 LaTeX pandoc
(以及 LaTeX 包含)。对于文章、传单等文档,这很容易。但是,我想尝试排版字母(例如使用法语类lettre
)。
您将如何调整 markdown/restructuredtext 语法来做到这一点(具体来说,传递变量并打开环境lettre
)?
答案1
Markdown 在逻辑标记方面相当有限。它缺少“发件人”、“收件人”等必要的结构元素。我认为仅用 Markdown 是无法创建信件的。
一种解决方案是使用类似预处理器 通用进程创建一个逻辑标记,将其转换为最终格式的不同结构元素。有一篇博客对此进行了详细描述:我如何不再担心并开始像使用 TeX 一样使用 Markdown。以下示例取自博客,让您了解如何在文档中使用它。它定义了文件名的逻辑标记。
<#define filename|`#1`>
<#ifdef HTML>
<#define filename|<code class="filename">#1</code>>
<#endif>
<#ifdef TEX>
<#define filename|\\filename{#1}>
<#endif>
The source is included in <#filename src/hello.c>
缺点是你必须为每种输出格式创建标记翻译。这就是灵活性的代价。
答案2
Pandoc 允许您指定模板和变量。例如,请参见此处的示例:http://pmagwene.github.io/blog/2013/02/07/pandoc-latex-letters/
解释该链接:您只需使用所需的字母类别等创建 latex 模板文件,然后添加 pandoc 宏(例如$title$
或$body$
)以包含变量(在 compile 命令中定义)和 markdown 文件中定义的内容。然后使用以下命令进行编译:
pandoc letter-to-joe.md -o letter-to-joe.pdf --template minletter --variable=addressee:"Joe McShmoe \\ 9876 Mulberry Ln. \\ Salinas, CA 97654"
请注意,自 pandoc 1.12 起,您还可以使用 yaml 标头定义变量。