![在使用 RMarkdown 转 pdf 时如何全局改变水平线的样式?](https://linux22.com/image/434003/%E5%9C%A8%E4%BD%BF%E7%94%A8%20RMarkdown%20%E8%BD%AC%20pdf%20%E6%97%B6%E5%A6%82%E4%BD%95%E5%85%A8%E5%B1%80%E6%94%B9%E5%8F%98%E6%B0%B4%E5%B9%B3%E7%BA%BF%E7%9A%84%E6%A0%B7%E5%BC%8F%EF%BC%9F.png)
我正在使用R Markdown
和Latex
来memoir
将一本书编译成 pdf。作者使用了***
水平分隔符的语法。检查编译后的.tex
文件,我可以看到从 markdown 转换为:
\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center}
如何进行全局样式设置\rule
?
为了以防万一有帮助,我在网上找到了这个可以改变颜色的片段,但不知道如何修改它以影响宽度和厚度:
\makeatletter
\let\old@rule\@rule
\def\@rule[#1]#2#3{\textcolor{blue}{\old@rule[#1]{#2}{#3}}}
\makeatother
答案1
最好使用 pandoc 的 lua 过滤器来修改生成的规则***
。
首先,你必须查找水平线在 pandoc 的 AST 中是如何表示的。你可以使用native
输出格式来做到这一点:
echo "* * *" | pandoc --from markdown --lua-filter=hl.lua --to native
返回:[HorizontalRule]
,现在您知道该元素被称为HorizontalRule
。要更改输出,您需要一个小程序来查找相关元素并返回您想要的代码:
-- horizontalrule.lua
if FORMAT:match 'latex' then
function HorizontalRule ()
return {
pandoc.RawBlock('latex', '\\rule'),
}
end
end
更改'\\rule'
为你想要的任何内容并使用选项调用 pandoc--lua-filter=horizontalrule.lua