Pandoc 输出中的表格或图像太宽,如 DOCX 或 PDF/LaTeX
Tables or images too wide in Pandoc output as DOCX or PDF/LaTeX
我正在使用 pandoc 和 markdown 编写一份快速而肮脏的报告。
我需要以最少的麻烦生成 PDF 或 DOCX,我不太关心哪个(当然最好是两者都生成)。此外,我对图形和表格有些限制——它们是用另一个程序先验生成的,我宁愿能够插入它们,然后将它们转换为适合 pandoc 的需要。
但是,主要的限制是我不想手动编辑生成的文档,无论是 LaTeX 还是 DOCX。我想在 markdown 中进行所有编辑。
问题是:
- 在 DOCX 中,表格显示良好:它们具有文档的宽度。然而,这些数字太宽泛了。我可以将图像转换为较低的分辨率(看起来不太好),或者在 Word 中手动调整图像的大小(这是不可能的)。
- 在PDF中,生成的图形很好(或多或少),但是又出现了两个问题:
- 表格太宽,因为没有换行符,而且
- LaTeX就是LaTeX,图和表的顺序是"reorganized",即不连续。
因此,none 生成的文档可用于我的目的。
我想做的就是将一些结果拼凑起来并生成一个文件,我可以将其发送给另一位科学家。
问题:在 pandoc 中以最少的努力生成快速而肮脏的报告的最佳解决方案是什么,并且至少所有结果都可见?
更新: 将 pandoc 升级到 1.4 或更高版本解决了这个问题——这些数字现在在 docx 文档中具有正确的大小。
控制图像大小
目前您无法直接从 Markdown 控制该功能。对于 LaTeX/PDF 输出,这由 LaTeX/pdflatex 本身自动处理。
最近几个月,Pandoc 开发人员和用户社区就如何最好地实现它并创建易于使用的语法进行了一些讨论,例如
![Image Caption](./path/to/image.jpg "Image Comment"){width="60%", height="150px"}
(警告:仅举例,现场编造+自己凭空抽取——记不清最新的讨论情况了。。。) 这个旨在然后传输到 all 支持的可以包含图像的输出格式,而不仅仅是传输到 LaTeX/PDF.
因此,这些方面的一些内容计划成为 Pandoc 下一个主要版本的主要新功能,并将在 ODT/DOCX 输出中开始更好地工作。
控制 table/cell 单元格内的宽度和换行符
您如何使用 Markdown 语法指定表格?
您是否知道 Pandoc 支持多种变体,例如 gid_tables
、pipe_tables
、simple_tables
和 multiline_tables
?
您应该考虑使用 pandoc --from=markdown+multiline_tables ...
作为您的命令,并在您的 Markdown 中将关键表写为 multiline_tables
。
通过man pandoc_markdown
阅读所有详细信息...
多行表格让您可以有限地控制输出中各个列的宽度,只需在降价源本身中加宽或缩小列宽即可。
输出时图表顺序LaTeX/PDF
Pandoc 支持在 Markdown 源文件中插入 raw_tex
行和环境。当它遇到这样的行时,它会将它们原封不动地传输到它的 LaTeX 输出中。 (但所有其他输出将被忽略。)
所以你可以插入像
这样的行
\newpage{}
进入 Markdown 以强制分页。这已经为您提供了一些有限的控制来保持行为不当的数字或表格的顺序。 (毕竟,你说你要找的是"quick and dirty"方法,而不是复杂的排版文档...)
当然,如果你对LaTeX的了解越来越多,你也可以使用类似的东西
/FloatBarrier
在你的 Markdown 中。
走这条路(将 LaTeX 代码混合到 Markdown 中)会给您带来一些缺点:
- Markdown 将不再那么漂亮。
- Markdown 无法与其他输出格式完全兼容(如果您需要)。
但是优势还是有:
- 与在 LaTeX 中创作相比,您在 Markdown 中编写和修改文档文本的速度要快得多。
- 您对 PDF 的最终外观有一些额外的控制:
- 表格+数字的顺序
- 外观+表格宽度+数字(因为,您当然可以插入完整的 LaTeX 'figure' 或 'table' 环境)。
我正在使用 pandoc 和 markdown 编写一份快速而肮脏的报告。
我需要以最少的麻烦生成 PDF 或 DOCX,我不太关心哪个(当然最好是两者都生成)。此外,我对图形和表格有些限制——它们是用另一个程序先验生成的,我宁愿能够插入它们,然后将它们转换为适合 pandoc 的需要。
但是,主要的限制是我不想手动编辑生成的文档,无论是 LaTeX 还是 DOCX。我想在 markdown 中进行所有编辑。
问题是:
- 在 DOCX 中,表格显示良好:它们具有文档的宽度。然而,这些数字太宽泛了。我可以将图像转换为较低的分辨率(看起来不太好),或者在 Word 中手动调整图像的大小(这是不可能的)。
- 在PDF中,生成的图形很好(或多或少),但是又出现了两个问题:
- 表格太宽,因为没有换行符,而且
- LaTeX就是LaTeX,图和表的顺序是"reorganized",即不连续。
因此,none 生成的文档可用于我的目的。
我想做的就是将一些结果拼凑起来并生成一个文件,我可以将其发送给另一位科学家。
问题:在 pandoc 中以最少的努力生成快速而肮脏的报告的最佳解决方案是什么,并且至少所有结果都可见?
更新: 将 pandoc 升级到 1.4 或更高版本解决了这个问题——这些数字现在在 docx 文档中具有正确的大小。
控制图像大小
目前您无法直接从 Markdown 控制该功能。对于 LaTeX/PDF 输出,这由 LaTeX/pdflatex 本身自动处理。
最近几个月,Pandoc 开发人员和用户社区就如何最好地实现它并创建易于使用的语法进行了一些讨论,例如
![Image Caption](./path/to/image.jpg "Image Comment"){width="60%", height="150px"}
(警告:仅举例,现场编造+自己凭空抽取——记不清最新的讨论情况了。。。) 这个旨在然后传输到 all 支持的可以包含图像的输出格式,而不仅仅是传输到 LaTeX/PDF.
因此,这些方面的一些内容计划成为 Pandoc 下一个主要版本的主要新功能,并将在 ODT/DOCX 输出中开始更好地工作。
控制 table/cell 单元格内的宽度和换行符
您如何使用 Markdown 语法指定表格?
您是否知道 Pandoc 支持多种变体,例如 gid_tables
、pipe_tables
、simple_tables
和 multiline_tables
?
您应该考虑使用 pandoc --from=markdown+multiline_tables ...
作为您的命令,并在您的 Markdown 中将关键表写为 multiline_tables
。
通过man pandoc_markdown
阅读所有详细信息...
多行表格让您可以有限地控制输出中各个列的宽度,只需在降价源本身中加宽或缩小列宽即可。
输出时图表顺序LaTeX/PDF
Pandoc 支持在 Markdown 源文件中插入 raw_tex
行和环境。当它遇到这样的行时,它会将它们原封不动地传输到它的 LaTeX 输出中。 (但所有其他输出将被忽略。)
所以你可以插入像
这样的行\newpage{}
进入 Markdown 以强制分页。这已经为您提供了一些有限的控制来保持行为不当的数字或表格的顺序。 (毕竟,你说你要找的是"quick and dirty"方法,而不是复杂的排版文档...)
当然,如果你对LaTeX的了解越来越多,你也可以使用类似的东西
/FloatBarrier
在你的 Markdown 中。
走这条路(将 LaTeX 代码混合到 Markdown 中)会给您带来一些缺点:
- Markdown 将不再那么漂亮。
- Markdown 无法与其他输出格式完全兼容(如果您需要)。
但是优势还是有:
- 与在 LaTeX 中创作相比,您在 Markdown 中编写和修改文档文本的速度要快得多。
- 您对 PDF 的最终外观有一些额外的控制:
- 表格+数字的顺序
- 外观+表格宽度+数字(因为,您当然可以插入完整的 LaTeX 'figure' 或 'table' 环境)。