Inkscape PDF 调整大小

Inkscape PDF 调整大小

我正在尝试包含一些我在 Inkscape 中保存的 PDF,并同时更改宽度和高度。这可能吗?我试过了\svgheight,但它没有同时取两个值。

这就是我所做的

\begin{figure}
  \begin{center}
    \def\svgwidth{0.75\columnwidth} 
    \input{illustration.pdf_tex}
  \end{center}
  \caption{Example}
  \label{figillustration}
\end{figure}

过去我可以这样做:

\begin{figure}
  \begin{center}
    \includegraphics[height=3.0in,width=3.8in,angle=0]{img_1.jpg}
    \caption{Example}
  \end{center}
\label{figgordon}
\end{figure}

(设置宽度和高度)。

我现在该怎么做?

答案1

这有用吗?

\begin{figure}
  \centering
  \def\svgwidth{\columnwidth}
    \resizebox{0.75\textwidth}{!}{\input{illustration.pdf_tex}}
  \caption{Example}
  \label{fig:illustration}
\end{figure}

使用\begin{center}可提供额外的垂直空间。建议使用\centering

或许这篇文章很有用。

編輯-1:

您可以从 Inkscape 将图表导出为 tikz 代码。您必须安装inkscape2tikz扩展从这里。安装后,图形可以导出为 tikz 代码(扩展->导出->导出到 TikZ 路径)。假设您将导出的文件保存为figure.tex。现在,在您的 latex 主文件中,您必须包含以下内容:

\begin{figure}[!htb]
\centering
\resizebox{0.75\textwidth}{!}{\input{figure.tex}}
\caption{Caption of the figure} \label{fig:myfigure}
\end{figure} 

您必须将figure.tex主 latex 文件放在同一文件夹中,或者必须指定 figure.tex 的完整路径,如\input{C:/figure-files/figure.tex}。我总是采用这种方法。

还有另一种方法,您可以将图形导出为 .pdf 文件(而不是 .pdf_tex)(文件->另存为->figure.pdf)。然后您可以像这样包含它:

\begin{figure}[!h]
\centering
\includegraphics[width=0.75\textwidth,height=0.5\textheight]{figure.pdf}
\caption{Caption of the figure}
\label{fig:myfigure}
\end{figure}

但如果您更改文档的字体,图中的字体将无法正确匹配。此外,最好保留aspect ratio。这可以通过仅提及图中的width或来实现。height

答案2

看起来您在导出文件时选中了“PDF+LaTeX:省略 PDF 中的文本并创建 LaTeX 文件”选项:

在此处输入图片描述

这将创建两个文件:.pdf.pdf_tex。前者是 PDF 格式的非文本图像,而后者包含必要的图像包含和文本相关内容,应在 LaTeX 中呈现。问题是图像包含如下所示:

\begingroup
  \makeatletter
  \providecommand\color[2][]{%
    \errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}
    \renewcommand\color[2][]{}%
  }
  \providecommand\transparent[1]{%
    \errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}
    \renewcommand\transparent[1]{}%
  }
  \providecommand\rotatebox[2]{#2}
  \ifx\svgwidth\undefined
    \setlength{\unitlength}{595.27558594pt}
  \else
    \setlength{\unitlength}{\svgwidth}
  \fi
  \global\let\svgwidth\undefined
  \makeatother
  \begin{picture}(1,1.4142857)%
    \put(0,0){\includegraphics[width=\unitlength]{tex.pdf}}%
     % <other text stuff>
    \end{picture}%
\endgroup

除了其他一些令人讨厌的东西之外,\svgwidth如果你不定义它,它就会定义。然而,从\includegraphics代码中可以看出,它只提供了width调整。因此你的问题\svgheight无法正常工作。

以下是我的建议:

  • 如果您有兴趣按比例缩放图像,只需设置\svgwidth
  • 如果你没有任何需要从 Inkscape 转换为 LaTeX 的文本,请导出到.pdf 没有勾选“PDF+LaTeX:省略 PDF 中的文本,并创建 LaTeX 文件”选项。这样,您就可以像往常一样通过以下方式包含图像\includegraphics[width=<wd>,height=<ht>]{<file>};或者
  • 使用以下方式添加图片

    \begin{figure}
      \centering
      \newsavebox{\myimage}% Box that will store image
      \begin{lrbox}{\myimage}
        \input{tex.pdf_tex}% Actual image and text
      \end{lrbox}
      \resizebox{3.8in}{3in}{\usebox{\myimage}}% Resize box
      % <caption> <label>
    \end{figure}
    

相关内容