我在 draw.io 中创建了一个图表,我想将其包含在我的 LaTeX 文件中。Draw.io 可以选择将其导出为 svg、png 或 pdf。
当包含 svg 时,LaTeX 会使用其自己的样式(字体大小和字体系列)重新渲染 svg 内的字体,从而导致图表看起来很糟糕。
可以包含 png 并且看起来不错,但我读到包含矢量图形通常会在打印时产生更好的效果。
draw.io 的 pdf 导出结果为整个 A4 页面,图表周围有大量空白。我可以将其包含在我的 LaTeX 文件中,但空白使它看起来很糟糕。
您是否有包含 draw.io 图像的解决方案?
假设:
- 如何裁剪 PDF 以显示其内容。
- 如何停止重新渲染 SVG 以使其在 draw.io 和 LaTeX 中看起来相同。
答案1
答案2
我将 draw.io 集成到我的论文的 LaTeX 工作流程中,如下所示:
在 Ubuntu 18.04 上测试。目录路径需要相应调整。
- 从以下位置安装“draw.io Desktop”https://about.draw.io/integrations/
我使用 draw.io-amd64-10.7.7.deb,因为我使用 Ubuntu。 - 启动 draw.io Desktop 并使用它来创建图形。
将它们存储在 ./document/images/drawio/ 下,并以 .drawio 作为扩展名,例如。myfigure.drawio
将 .drawio 文件转换为 PDF 文件。我使用一个简短的脚本来自动化该过程。
添加convert_drawio_figures.sh
到您的项目:#!/bin/bash /usr/bin/find ./document/images/drawio -name *.drawio -exec rm -f {}.pdf \; -exec /usr/local/bin/draw.io --crop -x -o {}.pdf {} \;
此脚本对 ./document/images/drawio/ 下的所有 .drawio 文件执行 draw.io,并将它们作为 PDF 文件导出到具有相同名称的同一目录中,例如
myfigure.drawio
导出到myfigure.drawio.pdf
。首先需要删除现有的 PDF 文件,否则 draw.io 会输出“写入文件时出错”。- 将生成的 PDF 包含在您的 tex 文件中。根据您的需要调整 LaTeX 选项。
\begin{figure}[h] \caption{Caption for my figure} \centering \includegraphics[width=0.75\textwidth]{images/drawio/myfigure.drawio.pdf} \end{figure}
- 在构建 LaTeX 文档之前手动运行
convert_drawio_figures.sh
,或者将其添加到构建配置中以便每次构建时自动运行它。
通过这种方法,您的所有 .drawio 文件都存储在本地。我将它们添加到我的文档的 git 存储库中,并在 .gitignore 文件中排除生成的 PDF 文件。
答案3
一些想法:
- 最简单的方法可能是用您最喜欢的搜索引擎搜索“裁剪 PDF”,然后让一些在线工具为您进行裁剪。
当包含 PDF 时
\includegraphics
,可以在可选参数中指定进行一些裁剪,例如:\includegraphics[trim=<left> <bottom> <right> <top>, clip]{mydrawio.pdf}
当您使用 SVG 的“导出为 PDF”功能并选择将文本渲染为 LaTeX 时,您通常会执行类似的操作,
\input{mydrawio.pdf_tex}
并使用 LaTeX 的当前字体设置编写文本。我非常喜欢这种方式,因为这样图表的字体与周围的文本相同,但是您必须调整字体设置,以使文本仅占用与 draw.io 中相同的空间。如果不知道你的图像在 draw.io 和 LaTeX 中的具体显示效果,我无法给你准确的解决方案。但通常你可以先尝试更改字体大小:
{\scriptsize\input{mydrawio.pdf_tex}}
答案4
根据以下答案普拉特纳我创建了一个 makefile 来执行此操作。除了 makefile 本身之外,最大的区别是我还将 drawio 添加到了 PATH
FILES := $(wildcard *.drawio)
PDFS := $(addsuffix .pdf, $(FILES))
.PHONY : all
all : $(PDFS)
%.drawio.pdf : %.drawio
drawio $< --crop -x pdf -o $@
clean :
rm *.drawio.pdf