Propriedades de caixas expressas em coordenadas tikz

Propriedades de caixas expressas em coordenadas tikz

No meu entendimento, qualquer caixa LaTeX exibe essas propriedades fundamentais:

insira a descrição da imagem aqui

.. equalquer coisaé embalado em uma caixa LaTeX.

Então, quando eu produzo uma tikzimagem, ela deve estar de alguma forma embrulhada em uma caixa. Na verdade, parece exibir tal heighte a baselinequando eu o uso. Por exemplo, este código:

\documentclass{report}

\usepackage[english]{babel}

\usepackage{tikz}
  \tikzset{x=1pt, y=1pt, z=1pt}

\begin{document}

\newcommand{\mypicture}{\begin{tikzpicture}
        \node (a) at (0, 0) {\strut$a$};
        \node (b) at (30, 0) {\strut$b$};
        \draw[->] (a) .. controls (15, -20) and (30, -30) .. (b);
\end{tikzpicture}}

In my rather long, multilined text, I wish I could insert \mypicture{} just
as if it were something natural..

\end{document} 

produz:

insira a descrição da imagem aqui

.. agora acho que meu ponto está ficando claro. A inserção acima não parece nada natural, uma vez que \mypicturea linha de base da caixa não corresponde (a)à linha de base do nó. E se assim fosse, o espaço vertical entre as duas linhas provavelmente seria afetado.

Como corrigir isso sem ajustes manuais sujos com \raisebox,\vspace etc.?

Como expressar todas tikzas propriedades da caixa de imagens em tikzcoordenadas?

Responder1

Nesse caso, você terá que dizer ao TikZ onde deseja baselineestar. Aqui você quer que esteja, por exemplo, no seu (a)nó.

Aqui está um código para fornecê-lo:

\documentclass{report}

\usepackage[english]{babel}

\usepackage{tikz}
  \tikzset{x=1pt, y=1pt, z=1pt}

\begin{document}

\newcommand{\mypicture}{\begin{tikzpicture}[baseline=(a.base)]
        \node (a) at (0, 0) {\strut$a$};
        \node (b) at (30, 0) {\strut$b$};
        \draw[->] (a) .. controls (15, 20) and (30, 30) .. (b);
\end{tikzpicture}}

In my text, insert \mypicture{} just as if it were something natural..


\end{document}

E seu resultado:

insira a descrição da imagem aqui

Espero que possa ajudar.

Responder2

A solução geral que eu precisava era uma combinação de ambos baselinee a chave maravilhosa use as bounding box: considere isto :)

\documentclass[a4paper, 12pt]{report}

\usepackage{tikz}
    \tikzset{x=1pt, y=1pt, z=1pt}

\begin{document}

\def\myfig{\begin{tikzpicture}[baseline=(base)] % choose baseline
    % box dimensions
    \path[draw, use as bounding box] (0, 0) rectangle (10, 15);
    % set baseline
    \coordinate (base) at (0, 5);
    % actual content
    \path[fill=blue] (0, 0) % a random path
        ..  controls (10, 10)
                 and (10, -10) ..
                     (10, 20) -- cycle;
    % visualize baseline
    \draw (0, 5) -- (10, 5);
\end{tikzpicture}}

Now I can define \emph{every} frea\myfig ng property of my tikz box!

\end{document}

insira a descrição da imagem aqui

Ufa!

informação relacionada