在使用 RMarkdown 转 pdf 时如何全局改变水平线的样式?

在使用 RMarkdown 转 pdf 时如何全局改变水平线的样式?

我正在使用R MarkdownLatexmemoir将一本书编译成 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

相关内容