
Wie positioniere ich ein TikZ-Bild relativ zum Fließtext? Ich habe mit TikZ einen Kreis gezeichnet und möchte ihn neben dem Fließtext positionieren (damit er beim Lesen gut zu sehen ist, aber nicht im Weg ist). Ich bin mir nicht sicher, wie das geht. Ich habe versucht, die Koordinaten zu ändern, um das Bild zu verschieben, aber es scheint nur die Figuren relativ zueinander zu verschieben, anstatt das gesamte Bild zu verschieben. Ich wäre für etwas Hilfe dankbar. Danke!
\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}
Antwort1
Um die folgenden Beispiele zu verdeutlichen, definiere ich ein Makro, das ein einfaches Tikz-Bild erzeugt, beispielsweise einen Kreis mit etwas Text darin:
\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}
}
Das Ergebnis:
Wenn Sie ein TikZ-Bild fertiggestellt haben, ist es für TeX nur ein Kästchen. Stellen Sie es sich als „großes Zeichen“ vor, das Teil eines Absatzes sein kann, wie das Folgende:
This paragraph contains a figure \mypicture{} inline.
Wie Sie sehen, ist die „Box“, die das Bild enthält, an ihrer Grundlinie mit dem Rest Ihres Textes ausgerichtet. Jedes Zeichen hat eine imaginäre Linie, die verwendet wird, um es vertikal mit anderen Zeichen in derselben Zeile auszurichten. Die Box kann über und unter ihrer Grundlinie verlaufen, aber standardmäßig platziert Tikz die Grundlinie des Bildes ganz unten in der resultierenden Box.
Sie können dies ändern, indem Sie baseline
Ihrem Tikzpicture die Option geben. Diese Option kann als Argument eine Dimension wie 1mm
oder den Namen einer beliebigen Koordinate innerhalb der Abbildung erhalten, wie a.center
oder a.north
sogar a.base
, was die Grundlinie des Textes innerhalb des Knotens ist a
. Sehen wir uns diese Fälle an:
\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}
}
Natürlich können Sie es nicht nur „inline“ verwenden, sondern auch überall dort einfügen, wo Sie auch jeden anderen Text einfügen könnten, z. B. in einer Fußnote, einer Randnotiz, einer Tabelle oder einer Abbildungsumgebung (wodurch es schweben würde). Sehen Sie sich das beispielsweise in einer Randnotiz an:
\marginpar{\mypicture[baseline=(a.base)]}
\lipsum[1]
\lipsum[2]
Sie können es auch in Kombination mit Paketen verwenden, die es beispielsweise wrapfig
ermöglichen, Text um Abbildungen oder Tabellen herumzufließen.
remember picture
Wenn Sie die Tikz-Optionen und verwenden overlay
, können Sie es an jeder absoluten Position auf der Seite platzieren, wie die andere Antwort zeigt.
Antwort2
remember picture,overlay
Sie können die Optionen und den Knoten verwenden current page
; im folgenden Beispiel habe ich auch dietikznodepages
Paket, um mithilfe des Knotens eine noch feinere Kontrolle zu erhalten current page text area
:
\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}