我喜欢在标题中使用粗体数字:
\newcommand*\oldthefigure{}
\let\oldthefigure=\thefigure
\renewcommand*\thefigure{\textbf{\oldthefigure}}
问题是,当我\ref
在文本中使用时,数字会变成粗体,这不是我想要的。我该如何解决这个问题,而不使用任何额外的包(因为我被迫这样做)?
答案1
article
定义
\def\fnum@figure{\figurename\nobreakspace\thefigure}
所以你要
\def\fnum@figure{\figurename\nobreakspace\textbf{\thefigure}}
(在本地包中,或在之间\makeatletter
)\makeatother
答案2
当你*有人因为类似的问题而找到了这个问题,并且已经在使用caption
包他们可以为此定义一个标签格式:
\documentclass{article}
\usepackage{caption}
% define label format with a bold number:
\DeclareCaptionLabelFormat{boldnumber}{\bothIfFirst{#1}{~}\textbf{#2}}
% use the new label format (only) for figures (without the
% optional argument /all/ floats will use the new format):
\captionsetup[figure]{labelformat=boldnumber}
\begin{document}
\begin{figure}
\centering
foo
\caption{foo}\label{fig:foo}
\end{figure}
figure~\ref{fig:foo}
\end{document}
*我没有注意到“不使用任何附加包”的要求。
答案3
如果您使用任何标准类文件(article/book/report
),那么您需要在之前添加以下代码\begin{document}
:
\makeatletter
\long\def\@makecaption#1#2{\begingroup%
\def\thefigure{\textbf{\arabic{figure}}}%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1: #2}%
\ifdim \wd\@tempboxa >\hsize
#1: #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip\endgroup}
\makeatother
在职的:在设置标题的宏\thefigure
中重新定义了定义,该标题保存在一个组内。\@makecaption