旋转一整圈,不包含任何文字

旋转一整圈,不包含任何文字

我有一个示意图(在下面的 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}

在此处输入图片描述

相关内容