我需要并排显示两个 PNG 格式的图表,我使用以下代码实现了这一点,但图表的分辨率和质量不如预期。我也有它们的 SVG 格式,但据我所知,在 latex 中使用 SVG 格式并不容易。有没有使用 SVG 的实用解决方案?因为 SVG 格式的质量比 PNG 好得多。
附言:如果需要,我可以在这里上传 SVG 格式的图形。
值得注意的是,如果textwidth
超过 0.45,两个图形就不再水平插入在一起,并且这种尺寸的图像会导致质量和分辨率下降。
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.45\textwidth}
\includegraphics[width=\textwidth]{Picture4}
\caption{}
\label{Picture4}
\end{subfigure}
\begin{subfigure}[b]{0.45\textwidth}
\includegraphics[width=\textwidth]{Picture2}
\caption{}
\label{Picture2}
\end{subfigure}
\caption{Caption.}
\end{figure}
答案1
我只是利用/阐明@quark67 在他们的评论中已经暗示的内容。如果我是你,我会将 .svg 文件转换为 .pdf 文件,然后使用\includegraphics
。有很多(免费的、在线的)工具可以做到这一点。
我确信您可以使用大于 0.45 的数字,但不能使用 0.5。原因是第一个换行符\end{subfigure}
会导致两个子图之间插入空格。这意味着您有 0.5\linewidth + space + 0.5\linewidth,这不适合一行。如果注释掉换行符,则可以避免出现空格,请参阅下面的代码。
图片来自https://freesvg.org/3d-atom-model,我只是需要一个例子。
\documentclass{article}
\usepackage{svg} % provides 'includesvg'
\usepackage{subcaption} % provides 'subfigure' and corresponding caption
\usepackage{showframe} % only for testing reasons, just kick it out
\begin{document}
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.5\textwidth}
\includesvg[width=\textwidth]{example}
\caption{Subfig 1.}
\label{sfig:Picture4}
\end{subfigure}% <- This will prevent adding a small space between the subfigures which causes the linebreak.
\begin{subfigure}[b]{0.5\textwidth}
\includesvg[width=\textwidth]{example}
\caption{Subfig 2.}
\label{sfig:Picture2}
\end{subfigure}
\caption{Caption.}
\label{fig:Pictures}
\end{figure}
\end{document}
编辑
如评论所示,文本不会随图像一起缩放。因此,可以使用\resizebox
而不是可选width
参数\includesvg
,但这会导致文本变小而无法阅读。也许两者结合可以满足要求:
\begin{subfigure}[b]{0.5\textwidth}
\scalebox{0.6666}{\includesvg[width=1.5\textwidth]{example}}
\caption{Subfig 2.}
\label{sfig:Picture2}
\end{subfigure}
这里,第一个参数中的因子必须\scalebox
是之前的因子的乘法逆元\linewidth
。
强制性说明:对于包含文本的图形,使用 es 并不是最好的样式,\scalebox
因为这会导致文档中的字体大小不一致。最简洁的方法是使用TikZ
。