我正在处理降价文件,例如
---
title: "dummy title"
highlight: "c"
highlighted: 'highlighted'
---
body text
进入高度定制的乳胶模板,其中“c”被突出显示为更大的tex宏的一部分。最后一步是拒绝我:这里不必指定虚拟元数据“突出显示”,但我找不到在下面的lua过滤器中生成它的方法:
text = require 'text'
newstring = '\\textit{a,b,c,d}'
function meta_vars (m)
-- m.highlighted = 'highlighted' -- not working
highlight = m.highlight
return m
end
function replace (elem)
if elem.text == 'highlighted' then
newstring = newstring:gsub(pandoc.utils.stringify(highlight),
'{\\bfseries '..pandoc.utils.stringify(highlight)..'}')
return pandoc.RawInline("latex", newstring)
else
return elem
end
end
return {{Meta = meta_vars}, {Str = replace}}
使用以下自定义模板
\documentclass[12pt]{article}
\begin{document}
\title{$title$ -- $highlighted$}
\maketitle
$body$
\end{document}
运行此示例的命令是
pandoc +RTS -K512m -RTS test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output test.tex --template _tpl.tex --lua-filter=filter.lua
正如所宣传的那样生产
如何摆脱YAML标头中的虚拟highlighted
标记?
答案 0 :(得分:0)
在这里,我真的不太了解您在使用乳胶宏在做什么,但是问题的症结似乎在于添加新的元数据元素。您用--not working
注释掉的那行对我来说似乎很好。您可能要使用
m.highlighted=pandoc.MetaString('highlighted')
但我认为这不会改变任何事情。
我还注意到,每当文本中出现单词highlighted
时,newstring变量都会被修改。使用两行highlighted
,新字符串将等于\textit{a,b,{\bfseries {\bfseries c}},d}
。
也许您可以在删除了乳胶宏内容的情况下重新陈述您的问题,而只关注您希望过滤器执行的操作。