Изображение в рамке и подпись в рамке

Изображение в рамке и подпись в рамке

Мне нужно вставить картинку в файл книги Latex, но картинка должна быть в рамке, и подпись после картинки тоже. Эта рамка не та же самая, картинка и подпись должны быть между горизонтальной линией. Но картинка должна быть отцентрирована, а подпись должна быть выровнена по левому краю по ширине картинки. Кто-нибудь может мне помочь?

решение1

Одним из возможных решений (возможно, не самым простым...) является использование captionпакета для добавления горизонтальной линии над подписью и использование mdframedпакета для помещения рамки вокруг комбинации рисунка и подписи.

Горизонтальную линию можно вставить, \DeclareCaptionFormatпоместив ее перед тремя аргументами (номер рисунка, разделитель, текст подписи), за которыми следует новая строка.

Чтобы линия охватывала весь кадр, необходимо отрегулировать поля, что возможно с \mdfdefinestyleпомощью mdframed.

Выравнивание подписи по левому краю возможно с помощью justificationопции в сочетании с singlelinecheck=falsefrom в \captionsetup. Однако это приведет к выравниванию по окружению рисунка, а не по ширине изображения, как указано в \includegraphics. Это немного сложнее, но возможным решением этой проблемы является введение новой длины (в MWE ниже \figwidth), установка значения этой длины на предпочтительную ширину вашего изображения и использование длины как в , \includegraphicsтак и с небольшим расчетом в формате подписи для определения отступа.

МВЭ:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage{mdframed}
\mdfdefinestyle{boxcaption}{innerleftmargin=0cm,innerrightmargin=0cm}
\newlength{\figwidth}

\DeclareCaptionFormat{myformat}{\hrulefill\newline\hspace*{\dimexpr(\textwidth-\figwidth)/2}#1#2#3}
\captionsetup[figure]{format=myformat,justification=justified,singlelinecheck=false}

\begin{document}
\begin{figure}[tb]
\begin{mdframed}[style=boxcaption]
  \centering
  \setlength{\figwidth}{0.7\textwidth}
     \includegraphics[width=\figwidth]{./fig/test}
  \caption{Left aligned}
  \label{fig:test}
\end{mdframed}
\end{figure}
You can see an example of a black box in Figure \ref{fig:test}.
\end{document}

Опция demoпредназначена graphicxтолько для отображения черного ящика, для фактического применения она не нужна.

Результат:

пример подписи в рамке

Это решение адаптировано изГоризонтальная линия под подписью рисунка.

решение2

Вот решение, использующее \fboxвместо mdframed. Все поля были установлены на \fboxsep. (Часть этого была украдена из решения Марийна.)

Я должен упомянуть, что \fboxsepони \fboxruleрегулируемые.

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
%\usepackage{mwe}
\usepackage{showframe}% check centering

\captionsetup[figure]{justification=justified,singlelinecheck=false}%

\newcommand{\pictureframe}[2]% #1=image, #2=caption
{\sbox0{#1}%
\centering
\fbox{\begin{minipage}{\wd0}
  \baselineskip=0pt
  \abovecaptionskip=\fboxsep
  \belowcaptionskip=0pt
  \usebox0\par
  \vspace{\fboxsep}%
  \hspace{-\fboxsep}% extend to frame
  \rule{\dimexpr \textwidth+2\fboxsep}{\fboxrule}%
  \hspace{-\fboxsep}
  \caption{#2}
\end{minipage}}}

\begin{document}
\begin{figure}
\pictureframe{\includegraphics[height=2in]{example-image}}{Left aligned}
\end{figure}
\end{document}

фотография в рамке

Связанный контент