我有几个较窄的图形,我想让其标题居中。我必须使用 Springer 的 LaTeX 模板(svmult.cls
)。这会使标题默认左对齐。我查看了这个问题建议添加captions
包然后在本地使用
\captionsetup{justification=centering}
但在本例中这不起作用。类文件中的相关部分如下所示:
\usepackage{subfig}
% redefininition of the captions for "figure" and "table" environments
%
\@ifundefined{floatlegendstyle}{\def\floatlegendstyle{\bfseries}}{}
\def\floatcounterend{\enspace}
\def\capstrut{\vrule\@width\z@\@height\topskip}
\@ifundefined{captionstyle}{\def\captionstyle{\normalfont\small}}{}
\@ifundefined{instindent}{\newdimen\instindent}{}
\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname
ext@#1\endcsname}{#1}{\protect\numberline{\csname
the#1\endcsname}{\ignorespaces #2}}\begingroup
\@parboxrestore\if@minipage\@setminipage\fi
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\def\twocaptionwidth#1#2{\def\first@capwidth{#1}\def\second@capwidth{#2}}
% Default: .46\textwidth
\twocaptionwidth{.46\textwidth}{.46\textwidth}
\def\leftcaption{\refstepcounter\@captype\@dblarg%
{\@leftcaption\@captype}}
\def\rightcaption{\refstepcounter\@captype\@dblarg%
{\@rightcaption\@captype}}
\long\def\@leftcaption#1[#2]#3{\addcontentsline{\csname
ext@#1\endcsname}{#1}{\protect\numberline{\csname
the#1\endcsname}{\ignorespaces #2}}\begingroup
\@parboxrestore
\vskip\figcapgap
\@maketwocaptions{\csname fnum@#1\endcsname}{\ignorespaces #3}%
{\first@capwidth}\ignorespaces\hspace{.073\textwidth}\hfill%
\endgroup}
\long\def\@rightcaption#1[#2]#3{\addcontentsline{\csname
ext@#1\endcsname}{#1}{\protect\numberline{\csname
the#1\endcsname}{\ignorespaces #2}}\begingroup
\@parboxrestore
\@maketwocaptions{\csname fnum@#1\endcsname}{\ignorespaces #3}%
{\second@capwidth}\par
\endgroup}
\long\def\@maketwocaptions#1#2#3{%
\parbox[t]{#3}{{\floatlegendstyle #1\floatcounterend}#2}}
\def\fig@pos{l}
\newcommand{\leftfigure}[2][\fig@pos]{\makebox[.4635\textwidth][#1]{#2}}
\let\rightfigure\leftfigure
\newdimen\figgap\figgap=0.5cm % hgap between figure and sidecaption
%
\long\def\@makesidecaption#1#2{\@tempdimb=3.6cm
\setbox0=\vbox{\hsize=\@tempdimb
\captionstyle{\floatlegendstyle
#1\floatcounterend}#2}%
\ifdim\instindent<\z@
\ifdim\ht0>-\instindent
\advance\instindent by\ht0
\typeout{^^JClass-Warning: Legend of \string\sidecaption\space for
\@captype\space\csname the\@captype\endcsname
^^Jis \the\instindent\space taller than the corresponding float -
^^Jyou'd better switch the environment. }%
\instindent\z@
\fi
\else
\ifdim\ht0<\instindent
\advance\instindent by-\ht0
\advance\instindent by-\dp0\relax
\advance\instindent by\topskip
\advance\instindent by-11\p@
\else
\advance\instindent by-\ht0
\instindent=-\instindent
\typeout{^^JClass-Warning: Legend of \string\sidecaption\space for
\@captype\space\csname the\@captype\endcsname
^^Jis \the\instindent\space taller than the corresponding float -
^^Jyou'd better switch the environment. }%
\instindent\z@
\fi
\fi
\parbox[b]{\@tempdimb}{\captionstyle{\floatlegendstyle
#1\floatcounterend}#2%
\ifdim\instindent>\z@ \\
\vrule\@width\z@\@height\instindent
\@depth\z@
\fi}}
\def\sidecaption{\@ifnextchar[\sidec@ption{\sidec@ption[b]}}
%
\newbox\bildb@x
%
\def\sidec@ption[#1]#2\caption{%
\setbox\bildb@x=\hbox{\ignorespaces#2\unskip}%
\if@twocolumn
\ifdim\hsize<\textwidth\else
\ifdim\wd\bildb@x<\columnwidth
\typeout{Double column float fits into single column -
^^Jyou'd better switch the environment. }%
\fi
\fi
\fi
\instindent=\ht\bildb@x
\advance\instindent by\dp\bildb@x
\if t#1
\else
\instindent=-\instindent
\fi
\@tempdimb=\hsize
\advance\@tempdimb by-\figgap
\advance\@tempdimb by-\wd\bildb@x
\ifdim\@tempdimb<3.6cm
\ClassWarning{SVMult}{\string\sidecaption: No sufficient room for the legend;
^^Jusing normal \string\caption}%
\unhbox\bildb@x
\let\@capcommand=\@caption
\else
% \ifdim\@tempdimb<4.5cm
% \ClassWarning{SVMono}{\string\sidecaption: Room for the legend very narrow;
% ^^Jusing \string\raggedright}%
\toks@\expandafter{\captionstyle\sloppy
\rightskip=\z@\@plus6mm\relax}%
\def\captionstyle{\the\toks@}%
% \fi
\let\@capcommand=\@sidecaption
% \leavevmode
% \unhbox\bildb@x
% \hfill
\fi
\refstepcounter\@captype
\@dblarg{\@capcommand\@captype}}
\long\def\@sidecaption#1[#2]#3{\addcontentsline{\csname
ext@#1\endcsname}{#1}{\protect\numberline{\csname
the#1\endcsname}{\ignorespaces #2}}\begingroup
\@parboxrestore
\@makesidecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}%
\hfill
\unhbox\bildb@x
\par
\endgroup}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
据我了解,它只是为由两个水平子图组成的图形定义了额外的标题?
知道为什么captionsetup
在这种情况下不起作用吗?是否有解决方法(也许使用其中的某些东西,subfig
因为该包中已经包含)。
编辑:这是一个简单的例子:
\documentclass[graybox]{svmult}
\begin{document}
\begin{figure}
\centering
My graphics
\captionsetup{justification=centering}
\caption{My caption}
\end{figure}
\end{document}
哪里svmult.cls
可以买到施普林格。
答案1
用一个minipage
。
\documentclass[graybox]{svmult}
\begin{document}
\begin{figure}
\centering
\begin{minipage}{.33\textwidth}
\centering
This text is supposed to substitute the image
in this figure environment
\caption{My caption}
\end{minipage}
\end{figure}
\end{document}
答案2
\usepackage{caption}
在居中对齐的标题中添加结果
\documentclass[graybox]{svmult}
\usepackage{caption}
\begin{document}
\begin{figure}
\centering
My graphics
\captionsetup{justification=centering}
\caption{My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv My caption dfhu orifv }
\end{figure}
\end{document}