如何修复 newntheorema 中文本和编号之间的间距

如何修复 newntheorema 中文本和编号之间的间距

我正在使用一个新定理来创建示例的编号,但不同数字之间的间距却有很大差异。

我已经尝试过\hspace在 Ex. 之后(编号之前)使用。我尝试过使用 minipage 来查看是否可以将编号设置为 Ex.1: 的样式,但没有成功。

事实上我希望一切都像这个标准一样例如 1:(所以没有空间)

请参阅下面的我的屏幕的照片。

我的代码是:

\newtheoremstyle{exemplo} {\topsep}   % above space
  {\topsep}   % below space
  {}  % body font
  {0pt}       % indent
  {\bfseries} % head font
  {:}         % head punctuation
  {0.2cm} % HEADSPACE
  {}          % CUSTOM-HEAD-SPEC

\theoremstyle{exemplo}
\newcounter{exemplo}

\setcounter{exemplo}{0} % Just for demonstration

\newtheorem{exem}[exemplo]{Ex. \hspace {-0.32cm}}

在此处输入图片描述

答案1

使用最后一个参数来\newtheoremstyle指定标题必须设置在一个框中,以便冻结其中的空格。

\documentclass{article}
\usepackage{amsthm}

\newtheoremstyle{exemplo}
  {\topsep}   % above space
  {\topsep}   % below space
  {}          % body font
  {0pt}       % indent
  {\bfseries} % head font
  {:}         % head punctuation
  {0.2cm}     % HEADSPACE
  {\mbox{\thmname{#1} \thmnumber{#2}\thmnote{ #3}}} % CUSTOM-HEAD-SPEC

\theoremstyle{exemplo}
\newcounter{exemplo}

\setcounter{exemplo}{0} % Just for demonstration

\newtheorem{exem}[exemplo]{Ex.\@}

\begin{document}

\begin{exem}
Calcule usando o algoritmo da decomposição calcule
\end{exem}

\begin{exem}
Numa sala de aula tem 18 meninas e 13 meninos,
quantos aiunos tem messa sala?
\end{exem}

\end{document}

在此处输入图片描述

仅供比较,如果最后一个参数为空,我们会得到

在此处输入图片描述

因此,您会发现\mbox确实解决了问题。还请注意,\@以使句号而不是句子结尾。也许您的设置包括\frenchspacing,但最好谨慎行事。

答案2

如果您使用amsthm,则定理名称后只会放置一个普通空格,并且该空格将根据需要与其他空格一起扩展以实现完全对齐。由于在不同上下文中,该空间量可能会有所不同,因此空间的大小会波动。

我能想到的最好的解决方法是重新定义命令\thmhead,使其使用\mbox{\ }常规空格,这样就不会扩展。您可以将其放在前缀末尾附近来实现这一点。

\makeatletter
\def\thmhead#1#2#3{%
  \thmname{#1}\thmnumber{\@ifnotempty{#1}{\mbox{\ }}\@upn{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}
\makeatother

或者如果你确实希望“Ex.”和数字之间没有任何空格:

\makeatletter
\def\thmhead#1#2#3{%
  \thmname{#1}\thmnumber{\@ifnotempty{#1}{}\@upn{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}
\makeatother

但我觉得可能还有更好的方法。

相关内容