我正在尝试包含一些我在 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}