我有代码,但标题不在图像的中心也不在图像的下方
梅威瑟:
\documentclass{article}
\usepackage{caption}
\usepackage{tikzpagenodes}
\begin{document}
\begin{figure}
\begin{center}
\begin{tikzpicture}[remember picture,overlay,shift={(current page.north west)}]
\node[anchor=north west,xshift=3cm,yshift=-4cm]{\includegraphics[width=3cm]{example-image-a}};
\end{tikzpicture}
\caption*{ABC DEF}
\end{center}
\end{figure}
\end{document}
请帮忙将标题放在图片下方(0.4厘米)和中央
答案1
像这样:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[remember picture,overlay]
\node (n1)[anchor=north west, inner sep=0pt,
xshift=3cm, yshift=-4cm] at (current page.north west) {\includegraphics[width=3cm]{example-image-a}};
\node [below=4mm] at (n1.south) {ABC DEF};
\end{tikzpicture}
\end{document}
答案2
由于使用了overlay
和shift
选项,您的 命令tikzpicture
实际上与正常文本流断开了连接。您的\caption*
命令与 无关tikzpicture
,它只是将标题放在原来的位置,即一个基本上为空的 内figure
。因此,我建议在这里完全省略figure
和center
环境,因为除了保存标题之外,它们没有任何用处,而标题不会以这种方式排版在所需的位置。
第一种方法
如果您希望figure
在下方添加类似标题tikzpicture
,则可以使用使用创建的节点内的包中\captionof
的功能,例如:caption
text width=3cm
\documentclass{article}
\usepackage{caption}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
\node[inner sep=0, anchor=north west, text width=3cm, shift={(3cm,-4cm)}]
at (current page.north west)
{\includegraphics[width=3cm]{example-image-a}%
\captionof{figure}{ABC DEF}};
\end{tikzpicture}
\end{document}
我使用了一种放置技术 ( \node[...] at (...) {...}
),我发现它比您示例中使用的技术更容易理解。另外:
我将其添加
inner sep=0
为节点选项的一部分,否则,您指定的偏移量将不会根据页面的左上角进行解释(尝试使用xshift=0cm
和yshift=0cm
,或等效地使用shift={(0cm,0cm)}
)。我将其替换
\usepackage{tikzpagenodes}
为\usepackage{tikz}
。您可能认为tikzpagenodes
在您的示例中需要它,因为它tikz
作为副作用加载,并且您实际上需要tikz
它而无需明确加载它;但是你不使用任何东西tikzpagenodes
:该current page
节点是 的一部分tikz
,它不需要以任何方式加载tikzpagenodes
,与您不使用的其他节点相反:current page text area
、current page marginpar area
和。在这里加载只是浪费时间和内存。current page header area
current page footer area
tikzpagenodes
tikz
第二种方法
另一种方法是使用使节点成为多行节点的选项手动准备标题文本,例如align=center
(参见文本参数:多行文本的对齐方式和宽度在里面钛钾Z 和 PGF 手册,第 229 页(版本 3.1.3),或者例如,这个答案):
\documentclass{article}
\usepackage{caption}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[remember picture, overlay]
\node[inner sep=0, anchor=north west, align=center, shift={(3cm,-4cm)}]
at (current page.north west)
{\includegraphics[width=3cm]{example-image-a}\\
\textbf{My:} hand-made caption};
\end{tikzpicture}
\end{document}
第三种方法
第二种方法的变体是将标题放在单独的节点中:这就是 Zarko 在他的回答。