使用 markdown/restructuredtext 制作信件

使用 markdown/restructuredtext 制作信件

对于简单的文档,我喜欢使用 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 标头定义变量。

相关内容