pandoc:如何生成不同的 \begin{figure} \end{figure} 环境

pandoc:如何生成不同的 \begin{figure} \end{figure} 环境

我有类似的问题这个

我有一个 markdown 文档,想将其转换为 pdf。我发现这些图形被放置在 latex 最适合的位置,但我希望它们准确地出现在 markdown 代码中的标签所在的位置。我希望 pandoc 生成以下图形代码:

\begin{figure}[H]
\centering
\fbox{\includegraphics[scale=0.4]{somepic.png}}
\caption{Some caption}
\end{figure}

我想要 scale 参数、[H] 和 fbox。此外,pandoc 会创建一个“图 N”标题,其他语言呢?我已经查看了很多关于这个问题的帖子,但我对提出的 latex 解决方案感到非常困惑(我有一些 latex 技能,但不是专家,我只是想从 markdown 创建一个像样的 pdf)。谢谢。

答案1

请务必阅读浮动放置 [H] 是否被认为是令人发指的?然后才能继续。

好吧。如果你真的想这样做,可以写一个类似下面的 lua 过滤器:短字幕.lua

if FORMAT ~= "latex" then
  return
end

local function latex(str)
  return pandoc.RawInline('latex', str)
end

function figure_image(elem)
  local image = elem.content and elem.content[1]
  return (image.t == 'Image' and image.title == 'fig:')
      and image
      or nil
end

function Para(para)
  local img = figure_image(para)
  if not img or not img.caption then
    return nil
  end

  return pandoc.Para {
    latex("\\begin{figure}[H]\n\\centering\n"),
    latex("\\fbox{"), img, latex("}"),
    latex("\n\\caption"), pandoc.Span(img.caption),
    latex("\n\\end{figure}\n")
  }
end

这将转变![Some caption](somepic.png){width=40%}

\begin{figure}[H]
\centering
\fbox{\includegraphics[width=0.4\textwidth,height=\textheight]{somepic.png}}
\caption{Some caption}
\end{figure}

相关内容