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}
다음을 제공합니다.
여기에는 두 가지 의심이 있습니다.
왜 두 줄이 같지 않습니까?
동쪽 참조(파란색과 녹색)가 있는 사각형을 가지려고 합니다.~ 전에문자 B와 C(그림
overlay
에 크기가 없으므로 확장하고 싶습니다)~ 전에삽입점). 나는 이것이 예상된 것이며 해당baseline
사례에 대해 정확하다는 것을 이해합니다(단지 상자를 수직으로 이동시킬 뿐입니다). 하지만... 수평 케이스에 해당하는 것이 있나요?\llap
좀 더 구체적으로 말하자면, 또는 유사한 트릭을 사용하여 그림을 이동할 수 있지만\rlap
궁금했습니다. tikz가 그림의 크기를 0으로 분쇄하면 마치 점으로 축소되는 것과 같습니다. 결정하는 방법이 있나요어디이 점은? 나도 시도했지만anchor
개체에 작동합니다.~에그림 자체가 아니라 그림.
답변1
이것이 당신을 위한 해결책일 수 있습니다. 단 하나의 TikZ 사진을 사용하여 원하는 효과를 얻는 방법을 잘 모르겠습니다. 따라서 TikZ 사진을 중첩하는 아이디어를 얻을 수 있습니다. 하지만 Nesting 에 대해 검색해 보면 tikzpicture
이것이 좋은 생각이 아니라는 의견이 많이 나와 있습니다. 따라서 TikZ 사진을 직접 중첩하는 대신 구성을 통해 사진을 다른 사진으로 밀수입합니다 \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}