自动将子标题放入图片内

自动将子标题放入图片内

我和这些人想要同样的东西:

但有一个小区别:我不喜欢手动输入 (a),而喜欢使用 \subcaption{}。为什么?因为如果以后以不同的方式排列图形,我可能会忘记相应地更改标签。

stackengine现在我确实喜欢使用-command的想法\stackinset。但是,它不接受\subcaption{}作为参数。

所以我的最低限度不工作示例如下(不工作部分是\subcaption{}其当前位置的命令):

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption,subcaption}
\usepackage{stackengine}

\begin{document}
\begin{figure}
    \begin{subfigure}{.96\textwidth}
        \stackinset{l}{1in}{b}{1in}{\subcaption{}}{\includegraphics[width=5in]{example-image-a}}
        \label{fig:test}
    \end{subfigure}
\end{figure}
\end{document}

答案1

由于摆脱命令\caption使用的跳过、规则和框并不容易,因此我将使用\phantomcaption它(用于管理计数器和标签)并自行排版子标题,例如:

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption,subcaption}
\usepackage{stackengine}

\begin{document}
\begin{figure}
    \begin{subfigure}{.96\textwidth}
        \phantomcaption
        \stackinset{l}{1in}{b}{1in}{(\thesubfigure) Text}{\includegraphics[width=5in]{example-image-a}}
        \label{fig:test}
    \end{subfigure}
\end{figure}
\end{document}

或者如果您想接管字幕包所使用的基本格式选项:

\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage[labelfont=bf,textfont=it,labelsep=endash]{subcaption} % ugly setting, just for demonstration
\usepackage{stackengine}

\makeatletter
\newcommand\makesimplesubcaption{\caption@@@make{\caption@fnum{sub\@captype}}}
\makeatother

\begin{document}
\begin{figure}
    \begin{subfigure}{.96\textwidth}
        \phantomcaption
        \stackinset{l}{1in}{b}{1in}{\makesimplesubcaption{Text}}{\includegraphics[width=5in]{example-image-a}}
        \label{fig:test}
    \end{subfigure}
\end{figure}
\end{document}

相关内容