
Я думал, что найду ответ.ЗДЕСЬ, но в данном конкретном случае решение, похоже, не работает...
В общем: как размещать подписи к рисункам внутри узлов tikz? Я сделал следующий MWE, но это не тот макет, который я использую в своей презентации, просто случайный, поэтому мне нужно общее решение, а не только для этого примера...
В этом примере я просто хочу разместить подпись прямо под рисунком B. Как это сделать?
МВЭ:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\usepackage[labelformat=empty,font=scriptsize,skip=0pt,
justification=raggedright,singlelinecheck=false]{caption}
\begin{document}
\begin{frame}
\begin{figure}
\begin{tikzpicture}[remember picture, every node/.style={inner sep=0,outer sep=0}]
\node[anchor=west] (A) at (0,0) {\includegraphics[width=2.25cm]{example-image-a}};
\node[right=0.75cm of A.east, anchor=west] (B) {\includegraphics[width=2.25cm]{example-image-b}
%\captionof{figure}{my caption here}%I was hoping this would work...
};
\node[below=\belowcaptionskip of B,text width=\linewidth]
{\captionof{figure}{my caption here}};%And this doesn't work either...
\node [right=0.75cm of B.east, anchor=west] (C) {\includegraphics[width=2.25cm]{example-image-c}};
\node [below=0.75cm of A.south east, anchor=north west] (D) {\includegraphics[width=2.25cm]{example-image}};
\node [right=0.75cm of D.east, anchor=west] (E) {\includegraphics[width=2.25cm]{example-image}};
\node [right=0.75cm of E.east, anchor=west] (F) {\includegraphics[width=2.25cm]{example-image}};
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}
Производит:
решение1
В случае, когда ваша подпись состоит всего из одной строки, вы можете получить желаемый результат без использования caption
пакета и figure
среды:
\documentclass{beamer}
\usepackage{lmodern,tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{frame}
\begin{center}
\begin{tikzpicture}[node distance=2mm and 5mm]
\node (A) {\includegraphics[width=2.25cm]{example-image-a}};
\node [right=of A] (B) {\includegraphics[width=2.25cm]{example-image-b}};
\node [right=of B] (C) {\includegraphics[width=2.25cm]{example-image-c}};
\node (capt) [below=of B,text width=\linewidth, align=center,font=\scriptsize]
{my caption here};
\node [below=of A |- capt.south] (D) {\includegraphics[width=2.25cm]{example-image}};
\node [right=of D] (E) {\includegraphics[width=2.25cm]{example-image}};
\node [right=of E] (F) {\includegraphics[width=2.25cm]{example-image}};
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
Однако вы можете разделить картинку TikZ на две части:
\documentclass{beamer}
\usepackage{lmodern,tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{frame}
\begin{figure}\centering
\begin{tikzpicture}[node distance=2mm and 5mm]
\node (A) {\includegraphics[width=2.25cm]{example-image-a}};
\node [right=of A] (B) {\includegraphics[width=2.25cm]{example-image-b}};
\node [right=of B] (C) {\includegraphics[width=2.25cm]{example-image-c}};
\end{tikzpicture}
\caption{my caption here}
\begin{tikzpicture}[node distance=2mm and 5mm]
\node (D) {\includegraphics[width=2.25cm]{example-image}};
\node [right=of D] (E) {\includegraphics[width=2.25cm]{example-image}};
\node [right=of E] (F) {\includegraphics[width=2.25cm]{example-image}};
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}
Если вам не нравится Figure
подпись в заголовке, вам нужно просто настроить caption
шаблон соответствующим образом, например, добавить в преамбулу:
\setbeamerfont{caption}{size=\scriptsize}
\setbeamertemplate{caption}{\insertcaption\par}
Приложение: Мне не ясно, в чем смысл узлов TikZ. Изображения в узлах можно расположить в той же форме кадра, что и раньше, без них:
\documentclass{beamer}
\setbeamerfont{caption}{size=\scriptsize}
\setbeamertemplate{caption}{\insertcaption\par}
\begin{document}
\begin{frame}
\begin{figure}\centering
\includegraphics[width=2.25cm]{example-image-a}\hfil
\includegraphics[width=2.25cm]{example-image-b}\hfil
\includegraphics[width=2.25cm]{example-image-c}
\caption{my caption here}
\includegraphics[width=2.25cm]{example-image}\hfil
\includegraphics[width=2.25cm]{example-image}\hfil
\includegraphics[width=2.25cm]{example-image}
\end{figure}
\end{frame}
\end{document}
Изображение кадра такое же, как и раньше, но код стал более простым и лаконичным.
решение2
Используйте justification=centering
опцию в caption
пакете.
\documentclass{beamer}
\usepackage{lmodern,tikz}
\usetikzlibrary{positioning,calc}
\usepackage[labelformat=empty,font=scriptsize,skip=0pt,
justification=centering,singlelinecheck=false]{caption}
\begin{document}
\begin{frame}
\begin{figure}\centering
\begin{tikzpicture}
\node [anchor=west] (A) at (0,0) {\includegraphics[width=2.25cm]{example-image-a}};
\node [right=0.75cm of A.east, anchor=west] (B) {\includegraphics[width=2.25cm]{example-image-b}};
\node [below=\belowcaptionskip of B,text width=\linewidth]{\captionof{figure}{my caption here}};
\node [right=0.75cm of B.east, anchor=west] (C) {\includegraphics[width=2.25cm]{example-image-c}};
\node [below=0.75cm of A.south, anchor=north] (D) {\includegraphics[width=2.25cm]{example-image}};
\node [right=0.75cm of D.east, anchor=west] (E) {\includegraphics[width=2.25cm]{example-image}};
\node [right=0.75cm of E.east, anchor=west] (F) {\includegraphics[width=2.25cm]{example-image}};
\end{tikzpicture}
\end{figure}
\end{frame}
\end{document}