我想创建一个由两个子图组成的图形,而不使用 caption 或 subcaption 包,因为这两个包似乎会破坏我的模板。但我在互联网上找到的所有子图解决方案都使用这两个包。我还有什么其他可能性?我希望 2 列布局中的两个图形覆盖两列,并且每个图形应为 1 列宽。
答案1
使用minipage
s 和一个新的计数器,您无需任何包就可以生成子图;您还可以定义一个命令来提供子标题:
\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}