考虑这样的事情:
\documentclass{article}
\usepackage{standalone}
\begin{document}
\includestandalone[scale=2]{myfile}
\includestandalone[scale=1.5]{myfile}
\end{document}
myfile
包含 tikz 图片的独立文件在哪里:
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,0) node[right]{$X$};
\end{tikzpicture}
\end{document}
我的问题是,缩放选项会缩放整个图片,包括节点和字符,如我示例中的 $X$。最好的更改方法是什么,以便我可以缩放图片而不缩放节点?即相当于没有该选项的 tikzpicture 环境的缩放选项transform shape
?
答案1
为什么不像这样呢?
\newcommand*\MyScale{1}
\newcommand*\Scale[1][1]{\renewcommand*\MyScale{#1}}
\tikzset{%
every picture/.style={%
scale=\MyScale,
}
}
这定义了一个带有单个可选参数的命令\Scale
。默认情况下,它只将缩放比例设置为 1。如果带有参数,它会将其设置为该值。然后在每个命令的开头使用它tikzpicture
来缩放图片,当然,不会缩放文本和标签。
所以你可以说
\includestandalone{\jobname-tikz}
\Scale[2]
\includestandalone{\jobname-tikz}
\Scale[1.5]
\includestandalone{\jobname-tikz}
\Scale[3]
\includestandalone{\jobname-tikz}
\Scale
\includestandalone{\jobname-tikz}
生产
我希望每次都能重置默认缩放比例。但是,我现在还想不出一个简单的方法来做到这一点,而且该功能似乎不值得使用非直接策略所带来的额外麻烦。
完整代码:
\begin{filecontents}{\jobname-tikz.tex}
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) -- (1,0) node[right]{$X$};
\end{tikzpicture}
\end{document}
\end{filecontents}
\documentclass{article}
\usepackage{standalone,tikz}
\newcommand*\MyScale{1}
\newcommand*\Scale[1][1]{\renewcommand*\MyScale{#1}}
\tikzset{every picture/.style={scale=\MyScale}}
\begin{document}
\includestandalone{\jobname-tikz}
\Scale[2]
\includestandalone{\jobname-tikz}
\Scale[1.5]
\includestandalone{\jobname-tikz}
\Scale[3]
\includestandalone{\jobname-tikz}
\Scale
\includestandalone{\jobname-tikz}
\end{document}
答案2
我会做这样的事情:
\documentclass[tikz]{standalone}
\def\Scale{3}
\pgfmathparse{1/\Scale}\edef\InvScale{\pgfmathresult}
\begin{document}
\begin{tikzpicture}[scale=\Scale]
\draw (0,0) -- (1,0) node[right]{\scalebox{\InvScale}{$X$}};
\draw (0,-0.25) -- (1,-0.25) node[right,scale=\InvScale]{$X$};
\draw (0,-0.5) -- (1,-0.5) node[right]{$X$};
\end{tikzpicture}
\end{document}
但我不确定它是否可以与\includestandalone
命令一起使用。