
Как мне расположить изображение TikZ относительно основного текста? Я нарисовал круг с помощью TikZ и хотел бы расположить его сбоку от основного текста (чтобы его было легко видеть при чтении, но не мешать). Я не уверен, как это сделать. Я пробовал менять координаты, чтобы переместить изображение, но, похоже, оно перемещает только фигуры относительно друг друга, а не перемещает все целиком. Я был бы признателен за помощь с этим. Спасибо!
\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}
решение1
Чтобы прояснить следующие примеры, я определю макрос, который создает простую картинку tikz, например, круг с текстом внутри:
\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}
}
Что производит:
После того, как вы закончите картинку TikZ, для TeX это будет просто коробка. Думайте о ней как о «большом персонаже», который может быть частью абзаца, как в следующем примере:
This paragraph contains a figure \mypicture{} inline.
Как вы видите, "ящик", содержащий изображение, выровнен с остальной частью текста по его базовой линии. Каждый символ имеет воображаемую линию, которая используется для вертикального выравнивания его с другими символами в той же строке. Ящик может простираться выше и ниже своей базовой линии, но по умолчанию tikz помещает базовую линию изображения в самый низ результирующего ящика.
Вы можете изменить это, задав опцию baseline
вашему tikzpicture. Эта опция может получить в качестве аргумента измерение, например 1mm
, или имя любой координаты внутри фигуры, например a.center
, a.north
или даже a.base
, которая является базовой линией текста внутри узла a
. Давайте рассмотрим эти случаи:
\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}
}
Конечно, в дополнение к использованию его "встроенным", вы можете разместить его в любом месте, где вы могли бы разместить любой другой текст, например, в сноске, примечании на полях, таблице или окружении рисунка (что сделает его плавающим). Посмотрите, например, на примечание на полях:
\marginpar{\mypicture[baseline=(a.base)]}
\lipsum[1]
\lipsum[2]
Вы также можете использовать его в сочетании с такими пакетами, wrapfig
которые позволяют обтекать рисунки и таблицы текстом.
Если вы используете параметры tikz remember picture
и overlay
, вы можете разместить его в любой абсолютной позиции на странице, как показано в другом ответе.
решение2
Вы можете использовать remember picture,overlay
параметры и current page
узел; в следующем примере я также использовалtikznodepages
пакет для получения еще более точного управления с помощью 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}