我遇到了与帖子中相同的问题使用预览或独立包水平裁剪包含子图的浮点图但我想在子图编号旁边放置一个子标题。然而,这会导致一些奇怪的行为(见示例)。当我将 documentclass 更改为 article 时,它按预期工作。
修改后的示例:
\documentclass[varwidth]{standalone}
\usepackage{mwe}
\usepackage[labelfont=footnotesize,labelformat=parens,
justification=centering]{caption,subfig}
\begin{document}
\def\FigSize{.23}
\begin{figure}[htbp!]
\centering
\subfloat[A]
{
\includegraphics[width=3cm]{example-image-a}
}
\subfloat[B]
{
\includegraphics[width=3cm]{example-image-b}
}
\end{figure}
\end{document}
答案1
我尝试创建自己的版本varwidth
。困难的部分是让它在诸如\newline
(实际上这里没有使用)之类的东西上工作。 \\
似乎可以工作,但会生成错误消息。
据我所知,\FigSize
什么也没做。当然不是由 subfig 包使用。
\documentclass{standalone}
\usepackage{mwe}
\usepackage[labelfont=footnotesize,labelformat=parens,
justification=centering]{caption,subfig}
\usepackage{environ}
\newlength{\maxwidth}
\makeatletter
\NewEnviron{fakefigure}[1][]{\def\@captype{figure}%
\def\newline{\egroup% end of previous \sbox1
\ifdim\wd1>\maxwidth \global\maxwidth=\wd1\fi
\sbox1\bgroup}
\let\par=\newline
\sbox1\bgroup\BODY\egroup
\ifdim\wd1>\maxwidth \global\maxwidth=\wd1\fi
\setcounter{subfigure}{0}}
\makeatother
\newcommand{\fakecaption}[2][]{\relax}
\NewEnviron{varwidth}{\bgroup% compute max width
\let\figure=\fakefigure
\let\endfigure=\endfakefigure
\let\caption=\fakecaption
\global\maxwidth=0pt
\sbox0{\BODY}%
\ifdim\wd0>\maxwidth \global\maxwidth=\wd0\fi
\egroup% restore defaults
\begin{minipage}{\maxwidth}
\BODY
\end{minipage}}
\begin{document}
\begin{varwidth}
\def\FigSize{.23}% no known function
\begin{figure}[htbp!]
\centering
\subfloat[A]
{
\includegraphics[width=3cm]{example-image-a}
}
\subfloat[B]
{
\includegraphics[width=3cm]{example-image-b}
}
\end{figure}
\end{varwidth}
\end{document}
答案2
该varwidth
包重新定义了 LaTeX 内核宏\@bsphack
,并且\@esphack
与原始定义不兼容。特别是现在\@bsphack
打开 TeX 组并\@esphack
关闭 TeX 组。不幸的是,这些宏在内部使用,因此无论您设置什么标题选项都无关紧要,它们现在始终设置在自己的组中,因此毫无价值,因为在使用该包(实际上,这更像是一种肮脏的黑客行为,而不是一个包)时,选项\captionsetup
在最后消失了。\captionsetup
varwidth
示例文档:
\documentclass[varwidth]{standalone}
\usepackage{caption}
\begin{document}
\begin{figure}
\captionsetup{textfont=bf,labelsep=space,labelformat=parens}% This is all without effect!
\caption{Hello!}
\end{figure}
\end{document}
如果有人对修复感兴趣,请填写错误报告https://gitlab.com/axelsommerfeldt/caption/issues我将在接下来的几天内caption
对包裹进行调整。varwidth
答案3
仅需注意,subcaption
可以使用\pbox
。
拥抱里面的人物\pbox
应该可以,但不能单独使用。还有一个额外:
的varwidth
\documentclass[a4paper]{article}
\usepackage{mwe}
\usepackage{varwidth,pbox}
\usepackage[labelformat=simple]{subcaption}
\renewcommand{\thesubfigure}{(\alph{subfigure})}
\begin{document}
\begin{figure} % Figure larger than the page
\centering
\makebox[\textwidth][c]{\mbox{%
\begin{subfigure}{8cm}
\includegraphics[width=\textwidth]{example-image-a}
\subcaption{A}
\end{subfigure}
\begin{subfigure}{8cm}
\includegraphics[width=\textwidth]{example-image-b}
\subcaption{B}
\end{subfigure}
}}
\caption{fig}
\end{figure}
\begin{figure} % Figure larger than the page
\centering
\makebox[\textwidth][c]{\pbox{1.3\textwidth}{%
\begin{subfigure}{8cm}
\includegraphics[width=\textwidth]{example-image-a}
\subcaption{A}
\end{subfigure}
\begin{subfigure}{8cm}
\includegraphics[width=\textwidth]{example-image-b}
\subcaption{B}
\end{subfigure}
}}
\caption{fig}
\end{figure}
\begin{figure} % Figure larger than the page
\centering
\makebox[\textwidth][c]{\begin{varwidth}{1.3\textwidth}
\begin{subfigure}{8cm}
\includegraphics[width=\textwidth]{example-image-a}
\subcaption{A}
\end{subfigure}
\begin{subfigure}{8cm}
\includegraphics[width=\textwidth]{example-image-b}
\subcaption{B}
\end{subfigure}
\end{varwidth}}
\caption{fig}
\end{figure}
\end{document}