不使用标题包的子图?

不使用标题包的子图?

我想创建一个由两个子图组成的图形,而不使用 caption 或 subcaption 包,因为这两个包似乎会破坏我的模板。但我在互联网上找到的所有子图解决方案都使用这两个包。我还有什么其他可能性?我希望 2 列布局中的两个图形覆盖两列,并且每个图形应为 1 列宽。

答案1

使用minipages 和一个新的计数器,您无需任何包就可以生成子图;您还可以定义一个命令来提供子标题:

\documentclass[twocolumn]{article}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{chngcntr}

\newcounter{mysfig}
\counterwithin{mysfig}{figure}

\renewcommand\themysfig{\thefigure(\alph{mysfig})}
\makeatletter
\newcommand\Scaption[1]{%
\refstepcounter{mysfig}%
\vskip.5\abovecaptionskip
  \sbox\@tempboxa{\small\themysfig~#1}%
  \ifdim \wd\@tempboxa >\hsize
    \small\themysfig~#1\par
  \else
    \global \@minipagefalse
    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  \fi
  \vskip\belowcaptionskip}
\makeatother

\begin{document}
\lipsum[1-2]
\begin{figure*}
\stepcounter{figure}
\begin{minipage}[t]{\columnwidth}
\begin{minipage}[b]{\columnwidth}
\includegraphics[width=\linewidth]{example-image-a}\par
\end{minipage}
\Scaption{this is the caption for the left subfigure}
\label{sfig:testa}
\end{minipage}\hfill
\begin{minipage}[t]{\columnwidth}
\begin{minipage}[b]{\columnwidth}
\includegraphics[width=\linewidth]{example-image-b}
\end{minipage}
\Scaption{this is the caption for the right subfigure, spanning two lines}
\label{sfig:testb}
\end{minipage}%
\end{figure*}
\lipsum[1-5]
References to subfigures~\ref{sfig:testa} and~\ref{sfig:testb}

\end{document}

在此处输入图片描述

相关内容