
如何相對於內文放置 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}