这是一个特定的问题,但我发现它在我的工作流程中经常出现:
- 生成独立
tikz
图表:- 一些透明物体 - 例如
opacity < 1
- 箭头,我更喜欢大样式:
> = Latex
来自 tikz 库arrows.meta
- 一些透明物体 - 例如
- 运行 ImageMagick
convert
转换.pdf
为.png
问题是,Latex
样式箭头在转换为时会产生奇怪的内边框.png
。
平均能量损失
mwe.tex:
\documentclass[margin=0.1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\draw[>=Latex,<->,opacity=1.00](0.0,-0.0)--(1.0,-0.0); % (1)
\draw[>=Latex,<->,opacity=0.99](0.0,-0.2)--(1.0,-0.2); % (2)
\draw[>=latex,<->,opacity=1.00](0.0,-0.4)--(1.0,-0.4); % (3)
\draw[>=latex,<->,opacity=0.99](0.0,-0.6)--(1.0,-0.6); % (4)
\end{tikzpicture}
\end{document}
编译并转换为 png:
pdflatex mwe.tex && convert -density 600 mwe.pdf mwe.png
MWE 结果:
关于 MWE:
- 你可以在箭头(1)和(2)中看到问题,目前
- 箭头 (3) 和 (4) 不受影响,因为它们的箭头较小:
> = latex
- 仅注释 (2) 和 (4) (
opacity=0.99
) 即可解决 (1) 的问题 - 即从图像中删除所有透明物体。
问题:
- 为什么会发生这种情况?
- 这是一个
tikz
问题还是 ImageMagick 的问题? - 除了避免透明度或使用较小的箭头之外还有其他解决方案吗?
谢谢
答案1
发生这种情况是因为这些箭头由一些绘制部分和一些填充部分组成。您可以使用 来避免这种情况transparency group
。
\documentclass[margin=0.1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\begin{scope}[transparency group,opacity=1.00]
\draw[>=Latex](0.0,-0.0)--(1.0,-0.0); % (1)
\draw[>=latex,<->](0.0,-0.4)--(1.0,-0.4); % (3)
\end{scope}
\begin{scope}[transparency group,opacity=0.99]
\draw[>=latex,<->](0.0,-0.6)--(1.0,-0.6); % (4)
\draw[>=Latex,<->](0.0,-0.2)--(1.0,-0.2); % (2)
\end{scope}
\end{tikzpicture}
\end{document}