![如何修复 newntheorema 中文本和编号之间的间距](https://linux22.com/image/454086/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20newntheorema%20%E4%B8%AD%E6%96%87%E6%9C%AC%E5%92%8C%E7%BC%96%E5%8F%B7%E4%B9%8B%E9%97%B4%E7%9A%84%E9%97%B4%E8%B7%9D.png)
我正在使用一个新定理来创建示例的编号,但不同数字之间的间距却有很大差异。
我已经尝试过\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
但我觉得可能还有更好的方法。