我正在使用 Texlive 2014 发行版中的 AIAA 类 v3.8 来制作一篇通信论文。我尝试使用 Tikz 的导出功能,tikzexternalize
中所述文档。
对我来说,tikzexternal
无法处理导出图的大小。下图中,1 代表正确结果,构建方式如下:
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
2 为错误结果,使用以下命令构建:
\usepackage{tikzexternal}
\tikzexternalize
请参阅,在第 1 页中,描边的宽度和高度均为 1 厘米。在第 2 页中,描边覆盖了所有文本宽度,而这并不是所要求的。
问题出在文档类上aiaa-tc
,而不是标准类article
(其中所有输出都类似于第 1 页)。哪里出了问题?
使用的代码如下:
\documentclass{aiaa-tc}
% leads to result 1
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize
%% leads to result 2
%\usepackage{tikzexternal}
%\tikzexternalize
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\draw (0,0) -- (1cm,1cm) ;
\end{tikzpicture}
\caption{A line}
\end{figure}
\end{document}
答案1
问题是该类包含这一行
\setkeys{Gin}{width=\linewidth,totalheight=\textheight,keepaspectratio}
每次使用时都会graphicx
应用这些设置\includegraphics
或类似设置。当你正常加载外部化库时,TikZ 会使用\pgfimage
包含外部化图像。当你使用时tikzexternal
,它会使用\includegraphics
\def\pgfincludeexternalgraphics#1{%
\begingroup
\pgfexternalreaddpth{#1}%
\setbox1=\hbox{\includegraphics{#1}}%
\ifdim\pgfretval=0pt
\box1
\else
\dimen0=\pgfretval\relax
\hbox{\lower\dimen0 \box1 }%
\fi
\endgroup
}
因此,类的键仅在加载时才会影响与图像包含相关的设置tikzexternal
,而不是在使用带有默认包含命令的外部化库时影响。
如果您确定提交指南允许,您可以全局或针对特定图像覆盖类为图像包含设置的键。
例如:
\documentclass{aiaa-tc}
% leads to result 1
% \usepackage{tikz}
% \usetikzlibrary{external}
% \tikzexternalize
%% leads to result 2
\usepackage{tikzexternal}
\tikzexternalize
\begin{document}
\begin{figure}
\centering
\setkeys{Gin}{width=.25\linewidth}
\begin{tikzpicture}
\draw (0,0) -- (1cm,1cm) ;
\end{tikzpicture}
\caption{A line}
\end{figure}
\end{document}