tikz 오버레이 사진 가로 위치

tikz 오버레이 사진 가로 위치

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}

다음을 제공합니다.

위 MWE의 결과, 8개의 색상 사각형

여기에는 두 가지 의심이 있습니다.

  1. 왜 두 줄이 같지 않습니까?

  2. 동쪽 참조(파란색과 녹색)가 있는 사각형을 가지려고 합니다.~ 전에문자 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}

여기에 이미지 설명을 입력하세요

관련 정보