Posicionando fotos TikZ

Posicionando fotos TikZ

Como posiciono uma imagem TikZ em relação ao corpo do texto? Desenhei um círculo usando TikZ e gostaria de posicioná-lo ao lado do corpo do texto (para que seja fácil de ver enquanto você lê, mas não atrapalhe). Não sei ao certo como fazer isso. Tentei alterar as coordenadas para mover a imagem, mas parece mover apenas as figuras umas em relação às outras, em vez de mover a coisa inteira. Eu apreciaria alguma ajuda com isso. Obrigado!

\documentclass{minimal}
\usepackage{tikz}
\begin{document}
Body text.
\begin{tikzpicture}
    \draw [fill = lightgray] (0,0) circle [radius = 1.25 cm];
\end{tikzpicture}
\caption{Circular Region}
\end{document}

Responder1

Para deixar claro os exemplos a seguir, definirei uma macro que produz uma imagem tikz simples, como um círculo com algum texto dentro:

\newcommand{\mypicture}[1][]{% 1 optional parameter for options for the tikz picture
\begin{tikzpicture}[#1]
\node[draw, circle, fill=yellow!30, inner sep=2mm] (a) {A};
\end{tikzpicture}
} 

O que produz:

insira a descrição da imagem aqui

Depois de terminar uma imagem do TikZ, para o TeX ela é apenas uma caixa. Pense nisso como um “grande personagem” que pode fazer parte de um parágrafo, como o seguinte:

This paragraph contains a figure \mypicture{} inline.

Em linha

Como você pode ver, a “caixa” que contém a imagem está alinhada com o restante do texto na linha de base. Cada caractere possui uma linha imaginária que é usada para alinhá-lo verticalmente com outros caracteres na mesma linha. A caixa pode se estender acima e abaixo de sua linha de base, mas por padrão o tikz coloca a linha de base da imagem bem na parte inferior da caixa resultante.

Você pode alterar isso, dando a opção baselineao seu tikzpicture. Esta opção pode receber como argumento uma dimensão como 1mm, ou o nome de qualquer coordenada dentro da figura, como a.center, a.northou ainda a.base, que é a linha de base do texto dentro do nó a. Vejamos estes casos:

\parbox{6cm}{
\begin{itemize}
\item Default: \hrulefill\mypicture 
\item 2mm: \hrulefill\mypicture[baseline=-2mm] 
\item Center: \hrulefill\mypicture[baseline=(a.center)]
\item North: \hrulefill\mypicture[baseline=(a.north)] 
\item Base: \hrulefill\mypicture[baseline=(a.base)]
\end{itemize}
}

Alinhamento vertical

Claro, além de usá-lo "inline", você pode colocá-lo em qualquer lugar onde possa colocar qualquer outro texto, como uma nota de rodapé, uma nota marginal, uma tabela ou um ambiente de figura (o que o faria flutuar). Veja-o, por exemplo, numa nota marginal:

\marginpar{\mypicture[baseline=(a.base)]}
\lipsum[1]

\lipsum[2]

Em margem par

Você também pode usá-lo em combinações com pacotes como wrapfigo que permite que figuras ou tabelas tenham texto agrupado em torno delas.

Se você usar as opções tikz remember picture e overlay, poderá colocá-lo em qualquer posição absoluta da página, como mostra a outra resposta.

Responder2

Você pode usar as remember picture,overlayopções e o current pagenó; no exemplo a seguir também usei otikznodepagespacote para obter um controle ainda mais preciso usando o current page text areanó:

\documentclass{article}
\usepackage[a6paper]{geometry}
\usepackage{tikz} 
\usepackage{tikzpagenodes} 
\usepackage{lipsum} 

\begin{document} 
\begin{tikzpicture}[remember picture,overlay]
\draw[fill = lightgray] ([xshift=0.7cm]current page text area.east) circle [radius = 0.5 cm]; 
\draw[fill = red!40] ([xshift=-0.7cm]current page text area.west) circle [radius = 0.5 cm]; 
\draw[fill = green!40] ([yshift=0.7cm]current page text area.north) circle [radius = 0.5 cm]; 
\draw[fill = blue!40] ([yshift=-0.7cm]current page text area.south) circle [radius = 0.5 cm]; 
\draw[fill = magenta!40] ([xshift=0.7cm,yshift=0.7cm]current page.south west) circle [radius = 0.5 cm]; 
\draw[fill = olive!40] ([xshift=-0.7cm,yshift=-0.7cm]current page.north east) circle [radius = 0.5 cm]; 
\end{tikzpicture} 

\lipsum[4]\lipsum[4]\lipsum[4]

\end{document}

insira a descrição da imagem aqui

informação relacionada