
라텍스 북 파일에 그림을 삽입해야 하는데, 그림에 액자가 있어야 하고, 그림마다 캡션도 있어야 합니다. 해당 프레임은 동일하지 않습니다. 그림과 캡션 사이에 수평선이 필요합니다. 하지만 그림은 중앙에 정렬되어야 하며 캡션은 그림 너비 왼쪽에 정렬되어야 합니다. 누구든지 나를 도와줄 수 있나요?
답변1
한 가지 가능한 해결책(가장 쉽지는 않을 수도 있음...)은 패키지를 사용하여 caption
캡션 위에 수평선을 추가하고 mdframed
패키지를 사용하여 그림과 캡션의 조합 주위에 프레임을 배치하는 것입니다.
\DeclareCaptionFormat
가로줄은 세 개의 인수(그림 번호, 구분 기호, 캡션 텍스트) 앞에 놓고 줄바꿈을 사용하여 삽입할 수 있습니다 .
라인을 전체 프레임으로 확장하려면 여백을 조정해야 하며 이는 \mdfdefinestyle
from 에서 가능합니다 mdframed
.
from justification
과 옵션을 결합하면 캡션의 왼쪽 정렬이 가능합니다 . 그러나 이는 에 지정된 이미지 너비가 아니라 그림 환경에 맞춰집니다 . 이는 좀 더 까다롭지만 이 문제에 대한 가능한 해결책은 새로운 길이(아래 MWE에서 )를 도입하고 이 길이의 값을 이미지의 기본 너비로 설정한 다음 해당 길이 를 들여쓰기를 결정하기 위해 캡션 형식의 작은 계산입니다.singlelinecheck=false
\captionsetup
\includegraphics
\figwidth
\includegraphics
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}
demo
에 대한 옵션은 단지 graphicx
블랙박스를 표시하기 위한 것이며 실제 적용에는 필요하지 않습니다.
결과:
이 솔루션은그림 캡션 아래 수평선.
답변2
\fbox
다음은 대신 사용하는 솔루션입니다 mdframed
. 모든 여백은 \fboxsep
. (이 중 일부는 Marijn의 솔루션에서 도난당했습니다.)
나는 그것을 언급해야하며 \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}