クラスで使用するとTikz出力が変わる(座標オフセット)

クラスで使用するとTikz出力が変わる(座標オフセット)

私は Tikz の初心者ですが、論文で使用するために見栄えの良いマスター スレーブ D フリップ フロップを作成しようとしました。良い出力は次のようになります。 ここに画像の説明を入力してください

上記の画像を生成するために使用されたコードは次のとおりです。

\documentclass{article}
\usepackage{tikz} 
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\usetikzlibrary{positioning, arrows, calc, circuits.logic.US}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{10pt}%

\renewcommand*{\familydefault}{\sfdefault}
\begin{document}

\tikzstyle{tg} = [rectangle, draw, text centered, text width=0.75em, minimum height=1em, thick, inner sep=0pt]

\tikzstyle{latch} = [rectangle, draw, text centered, text width=7.75em, minimum height=13em, thick, dashed, rounded corners, fill=gray!8]

\begin{tikzpicture}[scale=1, every node/.style={transform shape}, circuit logic US, huge circuit symbols]

\node [not gate, fill=gray!20, thick] (notd) {};
\node [latch] at (3.725,-1.5) (master) {};
\node [latch] at (7.825,-1.5) (slave) {};
\node [not gate,right=7em of notd.output, fill=gray!20, thick] (master1) {};
\node [not gate,below=8em of master1.center, rotate=180, fill=gray!20, thick] (master2) {};
\node [not gate,right=8em of master1.output, fill=gray!20, thick] (slave1) {};
\node [not gate,below=8em of slave1.center, rotate=180, fill=gray!20, thick] (slave2) {};
\node [not gate,right=3em of slave1.output, fill=gray!20, thick] (notq) {};

\node [tg, right=2em of notd] (tg1) {};
\node [above=0.05 of tg1.north west, inner sep=0pt] (tg1nw) {};
\node [above=0.05 of tg1.north east, inner sep=0pt] (tg1ne) {};
\node [below=0.05 of tg1.south west, inner sep=0pt] (tg1sw) {};
\node [below=0.05 of tg1.south east, inner sep=0pt] (tg1se) {};
\node [circle, above=0.18em of tg1.north, draw=black,thick,circle,inner sep=0pt, minimum size=0.25em] (tg1input) {};
\draw [thick] (tg1nw.center) -- (tg1ne.center);
\draw [thick] (tg1sw.center) -- (tg1se.center);
\node [tg, right=2.9em of master1.output] (tg2) {};
\node [above=0.05 of tg2.north west, inner sep=0pt] (tg2nw) {};
\node [above=0.05 of tg2.north east, inner sep=0pt] (tg2ne) {};
\node [below=0.05 of tg2.south west, inner sep=0pt] (tg2sw) {};
\node [below=0.05 of tg2.south east, inner sep=0pt] (tg2se) {};
\node [circle, below=0.18em of tg2.south, draw=black,thick,circle,inner sep=0pt, minimum size=0.25em] (tg2input) {};
\draw [thick] (tg2nw.center) -- (tg2ne.center);
\draw [thick] (tg2sw.center) -- (tg2se.center);
\node [left=1em of notd.input] (d) {D};
\draw [thick] (d) -- (notd.input);
\node [right=1em of notq.output] (q) {Q};
\draw [thick] (q) -- (notq.output);
\draw [thick] (notd.output) -- (tg1.west);
\draw [thick] (tg1.east) -- (master1.input);
\draw [thick] (master1.output) -- (tg2.west);
\draw [thick] (tg2.east) -- (slave1.input);
\draw [thick] (slave1.output) -- (notq.input);
\draw [thick] (master1.output) -- ++(0.5,0) |- (master2.input);
\draw [thick] (master2.output) -- ++(-0.5,0) |- (master1.input);
\draw [thick] (slave1.output) -- ++(0.5,0) |- (slave2.input);
\draw [thick] (slave2.output) -- ++(-0.5,0) |- (slave1.input);
\node [above=1em of tg1.north] (tg1in) {CLK};
\node [below=1em of tg1.south] (tg1inb) {$\overline{\mbox{CLK}}$};
\node [above=1em of tg2.north] (tg2in) {CLK};
\node [below=1em of tg2.south] (tg2inb) {$\overline{\mbox{CLK}}$};
\draw [thick] (tg1in) -- (tg1input.north);
\draw [thick] (tg1inb) -- ($(tg1se)!0.5!(tg1sw)$);
\draw [thick] (tg2in) -- ($(tg2ne)!0.5!(tg2nw)$);
\draw [thick] (tg2inb) -- (tg2input.south);
\node [circle, below=2em of master2.south, draw=black,thick,circle,inner sep=0pt, minimum size=0.5em] (mastercircle) {};
\node [circle, above=2em of slave2.north, draw=black,thick,circle,inner sep=0pt, minimum size=0.5em] (slavecircle) {};
\node [above=3em of master2.north] (clkm1) {CLK};
\node [below=3em of master2.south] (clkm2) {$\overline{\mbox{CLK}}$};
\draw [thick] (clkm1) -- (master2.south);
\draw [thick] (clkm2) -- (mastercircle.south);
\node [above=3em of slave2.north] (clks1) {CLK};
\node [below=3em of slave2.south] (clks2) {$\overline{\mbox{CLK}}$};
\draw [thick] (clks1) -- (slavecircle.north);
\draw [thick] (clks2) -- (slave2.north);
\node [above=0.1em of master.north] {Master};
\node [above=0.1em of slave.north] {Slave};



\end{tikzpicture}

\end{document}

しかし、Tikz コードを論文に入力しようとすると、「マスター/スレーブ」ボックスの座標が何らかの理由でオフセットされるようです。これが最も顕著な変更ですが、ラッチ内のインバータ リングやトランスミッション ゲートがわずかにオフセットされるなど、他の小さな変更もあります。論文の出力は次のようになります。 ここに画像の説明を入力してください

その理由は何でしょうか? 論文に挿入するときにスケーリングは行いません。同じになるはずです。論文ではカスタム ドキュメント クラスが使用されているため、問題が発生する可能性があると思います。その場合、どうすればこれを回避できますか?

答え1

ゴンサロ・メディナが上記のコメントで述べているように、私が使用していた間違いはそれらブロックを配置します。これが現在のフォントに相対的なサイズ変更オプションであることを知りませんでした。ドキュメントのフォントが異なるため、図はページごとに異なってレンダリングされました。

値を絶対パラメータに変更する。んん問題を解決しました。

関連情報