tikzpictureで作成されたボックスがテキストの残りの部分に対してどのように配置されているかについて問題があると思います。TikZ画像の配置垂直方向の配置がどのように機能するかは理解できたと思いますが、水平方向の配置に相当するものが見つかりません。
MWE について考えてみましょう。
\documentclass{report}
\usepackage{tikz}
\def\go[#1]{% does not work with current bounding box
\tikz[#1]{
\draw (0,0) node (sw) {sw} --
(1,0) node (se) {se} --
(1,1) node (ne) {ne} --
(0,1) node (nw) {nw} -- cycle;}
\hspace*{2cm}
}
\begin{document}
A\go[overlay, red, baseline=(sw)]
B\go[overlay, blue, baseline=(se)]
C\go[overlay, green, baseline=(ne)]
D\go[overlay, black, baseline=(nw)]
\vspace{2cm}
A\go[overlay, red, baseline=(current bounding box.south west)]
B\go[overlay, blue, baseline=(current bounding box.south east)]
C\go[overlay, green, baseline=(current bounding box.north east)]
D\go[overlay, black, baseline=(current bounding box.north west)]
\end{document}
つまり、次のようになります。
ここで2つの疑問があります。
なぜ 2 つの行が同じではないのですか?
私は東を基準にした正方形(青と緑)を作成しようとしています前に文字BとC(図形
overlay
にサイズがないので、文字BとCを拡張したい)前に挿入ポイント)。このbaseline
ケースではこれが予想され、正しいことは理解しています (ボックスを垂直方向に移動するだけです)。しかし、水平方向の場合に相当するものはありますか?\llap
もっと具体的に言うと、または同様のトリックで図形を移動できます\rlap
が、疑問に思ったのは、tikzが画像のサイズをゼロにすると、点に折りたたまれるような感じになるということです。どここのポイントは?私anchor
も試してみましたが、オブジェクトには機能しますで写真そのものではなく、写真そのもの。
答え1
これはあなたにとって解決策になるかもしれません。 1 つの TikZ 画像だけを使用して、必要な効果を達成する方法がわかりません。 そのため、TikZ 画像をネストするというアイデアが浮かぶかもしれません。 しかし、ネストについて検索するとtikzpicture
、これは良いアイデアではないという意見が多数見つかります。 したがって、TikZ 画像を直接ネストする代わりに、構造を使用して 1 つの画像を他の画像に密かに組み込みます\usebox
。
作成している構造で何をしたいのかよくわからないので、これはあなたにとって有効な解決策ではないかもしれませんが、ここに示します...
\documentclass{report}
\usepackage{tikz}
\def\go[#1]{% does not work with current bounding box
\tikz[#1]{
\draw (0,0) node (sw) {sw} --
(1,0) node (se) {se} --
(1,1) node (ne) {ne} --
(0,1) node (nw) {nw} -- cycle;
}}
\makeatletter
\def\ae@anchor@xoffset{0pt}
\def\ae@anchor@yoffset{0pt}
%% "content" will hold the smuggled in tikz picture. It should be wrapped in
%% brackets to prevent the key parser from misinterpreting comma.
%%
%% "anchor" will specify how to anchor the node for the second tikz picture
%%
%% "x|yoffset" will allow you to fine tune the placement of the content
\pgfkeys{/ae/anchor/picture/.cd,
content/.store in=\ae@anchor@picture@content,
anchor/.code={\def\ae@anchor@picture@node@anchor{node [outer sep=0pt,inner sep=0pt,anchor=#1]}},
xoffset/.store in=\ae@anchor@xoffset,
yoffset/.store in=\ae@anchor@yoffset,
}
\newsavebox\aebox
%% everything will be placed in a group to localize values to
%% current instance.
\newcommand\aeanchorpicture[1]{%%
\bgroup
\pgfkeys{/ae/anchor/picture/.cd,#1}%%
\begin{lrbox}\aebox
\ae@anchor@picture@content
\end{lrbox}%%
\tikz[remember picture,overlay]
\path (0,0) -- ++(\ae@anchor@xoffset,\ae@anchor@yoffset)
\ae@anchor@picture@node@anchor {\usebox\aebox};%%
\egroup
\hspace*{2cm}%%
}
\makeatother
\begin{document}
A\aeanchorpicture{content={\go[red]}, anchor=south west, xoffset=-2pt,yoffset=-2pt}%%
B\aeanchorpicture{content={\go[blue]}, anchor=south east}%%
C\aeanchorpicture{content={\go[green]}, anchor=north east}%%
D\aeanchorpicture{content={\go[black]}, anchor=north west}%%
\end{document}