我有一个示意图(在下面的 MWE 中大大简化了),我想使用直立和旋转,来自同一来源(即唯一的区别应该在参数上\begin{tikzpicture}
,不是在单个节点的代码中)。
问题是,如果我rotate
不使用transform shape
,整个图片就会散架;如果我使用transform shape
,那么标签也会旋转。我正在寻找一种行为类似于 的设置transform shape
,但对所有文本标签应用反向旋转。
基于这个答案,我尝试了以下操作,但似乎没有任何效果:
\tikzset{
every label/.append style={reset transform},
reset transform/.code={\pgftransformreset}
}
完整代码:
\documentclass[varwidth,margin=3mm]{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\newcommand{\schematics}{
\draw (0,0) node[dipchip, num pins=6](add){\ttfamily ADD};
\draw (add.pin 1) -- ++(-1,0) node[left]{\ttfamily x0};
\draw (add.pin 3) -- ++(-1,0) node[left]{\ttfamily y0};
\draw (add.pin 5) -- ++(1,0) node[right]{\ttfamily z0};
}
\begin{tikzpicture}
\schematics
\end{tikzpicture}
\begin{tikzpicture}[rotate=-90]
\schematics
\end{tikzpicture}
\begin{tikzpicture}[rotate=-90,transform shape]
\schematics
\end{tikzpicture}
\end{document}
答案1
不,抱歉,这行不通。
去年我尝试过纠正这个问题,但是改变太过具有侵略性而且……令人恐惧:https://github.com/circuitikz/circuitikz/pull/257
您可以做的是使用 旋转\myangle
,并在需要时transform shape
使用命令手动反向旋转标签:\rotatebox{\myangle}{...}
\documentclass[varwidth,margin=3mm]{standalone}
\usepackage{tikz}
\usepackage{circuitikz}
\begin{document}
\newcommand{\myangle}{0}\newcommand\slap[1]{\rotatebox{\myangle}{#1}}
\newcommand{\schematics}{
\draw (0,0) node[dipchip, num pins=6](add){\slap{\ttfamily ADD}};
\draw (add.pin 1) -- ++(-1,0) node[left]{\slap{\ttfamily x0}};
\draw (add.pin 3) -- ++(-1,0) node[left]{\slap{\ttfamily y0}};
\draw (add.pin 5) -- ++(1,0) node[right]{\slap{\ttfamily z0}};
}
\begin{tikzpicture}
\schematics
\end{tikzpicture}
\renewcommand{\myangle}{90}
\begin{tikzpicture}[rotate=-\myangle,transform shape]
\schematics
\end{tikzpicture}
\end{document}