由于分辨率低,用 SVG 替换 PNG 格式

由于分辨率低,用 SVG 替换 PNG 格式

我需要并排显示两个 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

相关内容