首先,给出一点背景:
我正在写一篇关于pandoc/yaml + Leo编辑的学术文章。有了这个组合,我可以用一种非常有机的方式写作。Leo编辑树是用来以非线性的方式组织写作的,所以我可以看到写作的主要主题和嵌套在它们上,选择在下一次写作会议中应该关注的内容,并将一些部分放在写作上等等。树中的Yaml节点存储书目图形引用,并使用定制的脚本节点将Leo树转换为pandoc的标记,该文件用于创建pdf。
今天我写了这样的文章:
See the image [#hs-world-map]
---
type: image
file: ../Imagenes/hackerspaces-mapa-2014-ene.png
scale: 50
alias: hs-world-map
caption: |
Mapa mundial de los hackerspaces a enero 4 de 2014 registrados en
http://hackerspaces.org. Las concentraciones de hackerspaces están denotadas
por dos indicadores: el número y el color. Los colores rojos y números
grandes indican mayor concentración de hackerspaces, seguidos por los
naranja y números medianos y terminando en los azules, con números pequeños.
Se puede ver cómo este es un fenómeno global con mayor preminencia
anglo-europea (la costa este de Estados Unidos tiene 110 hackerspaces y
Europa 175) y menor notoriedad en Sur América, India, China y Africa.
Algunos de los contrastes respecto a la cultura hackers y como se
contextualiza en el Norte Global y en el Sur Global que se han mencionado en
este escrito, se hacen evidentes en este mapa.
... 这是pandoc的标记文档中的一个yaml块(前面的“-”没有正确显示),定义了一些属性和语法,用于pandoc中的图像,比如比例尺、别名和支持长标题的更好的方法。在yaml块之外,我使用并发明了速记(“#hs map”)来引用别名数字,类似于“引文参考书目”。
我从lua实例和pandoc脚本指南中看到,可以编写修改pandoc输出的自定义编写器,但我不知道如何从yaml块中提取数据,以及使用自己的缩写来表示交叉引用数字(#别名)是否有效。所以我的问题是:
(我认为这种自定义语法可能是一种改进pandoc共享yaml块和自定义编写器的方法,至少是关于如何做到这一点的一个很好的实验)。
发布于 2014-01-07 20:04:44
我发现做你想做的事是不可能的。
文件上说表示文档中可以有多个YAML块,但它们将合并到一个单独的块中,始终保持每个属性的第一个外观。
让我们考虑一下这个示例文档,我将其称为test.md
---
a: Hola
b: mundo
...
---
a: Lorem
c: ipsum
...如果我将其转换为Pandoc的本机表示形式,您将注意到a的第二次使用已经丢失,无法区分这两个块:
$ pandoc test.md -t native -s
Pandoc (Meta {unMeta = fromList [
("a",MetaInlines [Str "Hola"]),
("b",MetaInlines [Str "mundo"]),
("c",MetaInlines [Str "ipsum"])
]})因此,虽然可以有多个YAML块,但它们被认为是单个元数据对象的一部分。
发布于 2015-06-25 09:07:46
是,
要获得完整的LaTeX模板,请使用
pandoc -D latex相关部分是从元数据中提取作者的代码。
$if(author)$
\author{$for(author)$$author$$sep$ \and $endfor$}
$endif$它将从yaml元数据的这一部分提取多个作者:
---
author:
- Mr. Smart
- Mr. Brilliant
...您可以将模板扩展到
$if(author)$
\author{
$for(author)$
$author.name$ \\
$author.email$
$sep$ \par
$endfor$
}
$endif$并使用这个yaml作为输入
---
author:
- name: Mr. Smart
email: smart@author.com
- name: Mr. Brilliant
email: brilliant@author.com
...因此,有一个重要的限制:所有相同类型的yaml块都应该不中断(yaml)。每个街区都应该以"-“开头。
我正在以这种方式“滥用”yaml元数据,以非常简约的yaml语法编写评估文档的全部内容,这种语法现在很容易编写,并将在将来简化自动处理。我使用pandoc作为一个容易使用的yaml到LaTex (pdf)转换器。
可能值得提出一个特性请求,以改进pandoc的yaml阅读,同时也接受多个同名字段(例如,作者),并允许遍历这些字段。
https://stackoverflow.com/questions/20928830
复制相似问题