我正在编写一个文档,其中包含从 Inkscape 导出的图形(pdf+latex 格式)。这些图形使用figure
包含所有文本标签的环境和一个\includegraphics
从 pdf 文件导入图形部分的宏。
默认情况下,这些图形使用与文档其余部分相同的字体,这对我来说太大了。为了解决这个问题,我先将图形放大,然后使用 将其缩小到原始大小\resizebox
。这不会改变图形的大小,只会改变用于呈现文本标签的字体大小,这很完美。
然而,有一个奇怪的小问题我无法解决。所有图形都向右移动,并且比直接包含figure
在 中的图形(即没有用环境包装)略小\resizebox
。
下面是一个揭示此行为的测试文档:
\documentclass{article}
\usepackage[pdftex]{graphicx}
\usepackage{color}
\begin{document}
\begin{figure}[!t]
\def\svgwidth{1.5\textwidth}%
\resizebox{\textwidth}{!}{%
\input{testfig.pdf_tex}%
}
\caption{Test with ``figure'' environment.}
\end{figure}
\begin{figure}[!t]
\resizebox{\textwidth}{!}{%
\includegraphics[width=1.5\textwidth]{testfig.pdf}%
}
\caption{Test without ``figure'' environment.}
\end{figure}
\vbox{}
\end{document}
从 Inkscape 导出的文件testfig.pdf_tex
(已删除注释):
\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}{778.02519531pt}
\else
\setlength{\unitlength}{\svgwidth}
\fi
\global\let\svgwidth\undefined
\makeatother
\begin{picture}(1,0.36433855)%
\put(0,0){\includegraphics[width=\unitlength]{testfig.pdf}}%
\put(0.51462818,0.17761502){\color[rgb]{0,0,0}\makebox(0,0)[b]{\smash{Some text}}}%
\end{picture}%
\endgroup
答案1
问题出在行尾字符上,例如\providecommand\rotatebox[2]{#2}
。当 中未使用这些行尾字符时\resizebox
,这些行尾字符将被忽略,因为 TeX 处于垂直模式;而\resizebox
TeX 内部处于水平模式,它们算作空格。
\begin{figure}[!t]
\def\svgwidth{1.5\textwidth}%
\begingroup\endlinechar=-1
\resizebox{\textwidth}{!}{%
\input{testfig.pdf_tex}%
}\endgroup
\caption{Test with ``figure'' environment.}
\end{figure}
设置后\endlinechar=-1
我们至少可以在持续时间内忽略它们\input
。
您还可以定义
\newcommand{\noendlineinput}[1]{\begingroup
\endlinechar=-1 \input{#1}\endgroup}
并说
\begin{figure}[!t]
\def\svgwidth{1.5\textwidth}%
\resizebox{\textwidth}{!}{%
\noendlineinput{testfig.pdf_tex}%
}
\caption{Test with ``figure'' environment.}
\end{figure}
您应该检查输入文件中从未使用行尾来分隔picture
环境中的单词。