如何在Pandoc Markdown表格中实现水平布局?

3

代码

pandoc                              \
     data.tex                       \
    -f markdown                     \
    -t html                         \
                                    \
| grep -E '(^<|^$|^ *$)'            \
                                    \
| grep -v '^<p'                     \
                                    \
| perl -pe 's#(?<!\\)%.*</#</#'     \
                                    \
| pandoc                            \
    -f html                         \
    -o vertical_output.pdf          \
    --latex-engine=xelatex

该程序将表格以垂直布局的形式输出,如下图所示。

需要水平表格的示例情况

文件data.tex的内容是以下数据。

Data.tex:

--------------------------------------------------------------------------------------------------------------------------------------------
Name            Description     Location        Examples            Start            Peak            Duration        Appearance
--------------- --------------- --------------  ------------------- ---------------- --------------  ---------------  -------------------
Prandial        short-acting    belly,          Lispro (Humalog),   5-10 min before  30-60 minutes   2-4 hours       Transparent
                analogs         abdomen         Aspart (Novorapid), meal
                = chemically                    Glulisine (Apidra)
                sythesized;


Regular/short   human insulin   addomen         Humulin R           30 min before    60 minutes      6-8 hours,       Transparent
                not analog                                          meal                             hypoglycemia
                                                                    not flexible                     risk 
-------------------------------------------------------------------------------------------------------------------------------------------

Table: Diabetic drugs parndial and basal. Location, start, peak, duration and appearance. 

通过运行上述代码提供数据。

enter image description here

评论

  • 我希望拥有水平布局,以便表格可以相应地调整。 我不知道应该影响到哪个阶段才能实现它。 我认为在最后的 pandoc 处理中应该是可能的。

稀疏表周围有太多空间

一个文档有许多类型的表格。 如果表格相当充实,当前接受的答案效果很好,但是对于稀疏的表格效果不佳。 使用接受答案的参数 -V geometry:"paperwidth=22in, paperheight=210mm, margin=2cm",我们得到:

enter image description here

第二个表格过于宽了,我希望它更窄一些;但不确定在Pandoc中是否可以动态实现。


如何在Pandoc中实现水平布局?

1
你的输入数据是什么样子的?它似乎托管在文件 data.tex 中。文件名后缀表明它是 (La)TeX。命令行开关 -f markdown 告诉 pandoc 将该输入处理为 Markdown... 怎么回事? - Kurt Pfeifle
@KurtPfeifle 在问题正文的示例数据部分中有示例数据,您可以将其保存为 data.tex - Léo Léopold Hertz 준영
1
请将这一事实标明为“data.tex文件的内容”或类似的标签,而不仅仅是“数据”。 - Kurt Pfeifle
你又在图示中添加了另一个PDF输出表格,却没有提供生成它所需的输入数据。请放弃任何希望,以便获得这种不完整问题的有用答案。请开始应用基本逻辑。请不要假设你的读者知道你所知道的。 - Kurt Pfeifle
1个回答

3
每当您使用Pandoc生成PDF输出时,您可以通过在命令行中添加参数来控制文件的页面大小。例如,生成一个宽度为22英寸、高度为210毫米的页面,同时将每个边距保持在2厘米,使用以下Pandoc参数:
-V geometry:"paperwidth=22in, paperheight=210mm, margin=2cm"

我希望这个例子能让你清楚地了解如何以不同的方式影响输出纸张大小。
然而,我不确定它是否回答了你的问题。你的问题对我来说不是很清楚,我必须承认。
我的答案可能会在其他人搜索“水平布局pandoc markdown”时有所帮助。
完整的命令如下:
首先,宽度为12英寸:
pandoc                              \
     data.tex                       \
    -f markdown                     \
    -t html                         \
                                    \
| grep -E '(^<|^$|^ *$)'            \
                                    \
| grep -v '^<p'                     \
                                    \
| perl -pe 's#(?<!\\)%.*</#</#'     \
                                    \
| pandoc                            \
    -f html                         \
    -o vertical_output1.pdf         \
    --latex-engine=xelatex          \
    -V geometry:"paperwidth=12in, paperheight=80mm, margin=0.5cm"

其次,14英寸宽度:

pandoc                              \
     data.tex                       \
    -f markdown                     \
    -t html                         \
                                    \
| grep -E '(^<|^$|^ *$)'            \
                                    \
| grep -v '^<p'                     \
                                    \
| perl -pe 's#(?<!\\)%.*</#</#'     \
                                    \
| pandoc                            \
    -f html                         \
    -o vertical_output1.pdf         \
    --latex-engine=xelatex          \
    -V geometry:"paperwidth=14in, paperheight=80mm, margin=0.5cm"

输出结果(作为来自PDF的PNG截图以便在此处显示):


我扩展了你的答案,以适应具有完整表和稀疏表的条件,请参见问题正文。Pandoc如何动态处理这些表格?我想要缩小稀疏表。 - Léo Léopold Hertz 준영
抱歉,如果你“扩展”并且过度修改我的答案,我不喜欢。我建议你做以下几点:**(1)** 重新制定你的原始问题,以使其清晰明了。因为即使对我来说也不是很清楚——尽管你接受了我的回答,对我来说这只是一个“瞎猜”的答案。 (2) 添加你自己的答案和扩展。如果它值得,我甚至会给它点赞。 :-) - Kurt Pfeifle
这个案例已经完成了。我添加了一个关于被接受的答案的扩展,显示了其中的限制。因此,开了一个新的线程。没有必要在这里添加过多的扩展作为答案。我期望答案至少能提供所提议答案的输出,所以我添加了你的命令输出,以便预览。这里和新线程中的改进总是受欢迎的!我认为答案的反馈可以非常有益。 - Léo Léopold Hertz 준영

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接