
Preciso inserir uma imagem no arquivo do livro Latex, mas a imagem deve ser emoldurada, e legenda após imagem também. Esse quadro não é o mesmo, a imagem e a legenda precisam de uma linha horizontal entre eles. Mas a imagem precisa ser centralizada e a legenda alinhada à esquerda na largura da imagem. Alguém pode me ajudar?
Responder1
Uma solução possível (talvez não seja a mais fácil...) é usar o caption
pacote para adicionar uma linha horizontal acima da legenda e usar o mdframed
pacote para colocar uma moldura em torno da combinação de figura e legenda.
A linha horizontal pode ser inserida \DeclareCaptionFormat
colocando-a na frente dos três argumentos (número da figura, separador, texto da legenda) seguida por uma nova linha.
Para que a linha abranja todo o quadro, as margens devem ser ajustadas, o que é possível com \mdfdefinestyle
from mdframed
.
O alinhamento à esquerda da legenda é possível com a justification
opção combinada com singlelinecheck=false
from in \captionsetup
. No entanto, isso justificará o ambiente da figura e não a largura da imagem especificada em \includegraphics
. Isso é um pouco mais complicado, mas uma solução possível para esse problema é introduzir um novo comprimento (no MWE abaixo \figwidth
), definir o valor desse comprimento para a largura preferida da sua imagem e usar o comprimento dentro \includegraphics
e com um pequeno cálculo no formato da legenda para determinar o recuo.
MWE:
\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}
A demo
opção graphicx
é apenas mostrar a caixa preta, isso não é necessário para a aplicação real.
Resultado:
Esta solução é adaptada deLinha horizontal abaixo da legenda da figura.
Responder2
Aqui está uma solução usando \fbox
em vez de mdframed
. Todas as margens foram definidas como \fboxsep
. (Parte disso foi roubada da solução de Marijn.)
Devo mencionar isso \fboxsep
e \fboxrule
são ajustáveis.
\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}