包含独立 tikz 文件并在不缩放节点的情况下缩放它的最佳方式

包含独立 tikz 文件并在不缩放节点的情况下缩放它的最佳方式

考虑这样的事情:

\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命令一起使用。

在此处输入图片描述

相关内容