我希望使用 AMS LaTeX 系统创建一个类似定理的环境,它仅由一个括号内的数字组成:没有其他声明,如定理、引理等。其他属性(环境上方和下方的间距、数字和文本开头之间的间距等)应该与普通的类似定理的环境相同。
我的想法是使用如下\newtheoremstyle
命令\newtheorem
,可以在一个最小的非工作示例中找到:
\documentclass[11pt]{amsbook}
\usepackage{amsthm}
\newtheoremstyle{parens}
{.5\baselineskip±.2\baselineskip}
{.5\baselineskip±.2\baselineskip}
{}
{\parindent}
{}
{)}
{.5em}
{}
{}
\theoremstyle{parens}
\newtheorem{nitem}[equation]{(} %(*)
\begin{document}
\begin{nitem}
This is a test of the emergency broadcasting system.
\end{nitem}
(1)\hspace*{.5em}This is a test of the emergency broadcasting system.
\end{document}
结果如下:
因此,数字按需要被括号包围,但左括号后有一个烦人的空格。我怀疑它newtheoremstyle
不是打算以这种方式使用的......但是:可以用某种通用方法消除空格吗?我的临时解决方案是在标有 (* 的行中的 ( 后引入一个负空格,但我不知道哪种空格可以对所有字体和字体大小进行校正。或者还有其他方法吗?感谢您阅读本文。
答案1
使用最后一个参数(head-spec)\newtheoremstyle
(请注意,你有一个{}
太多了)。
\documentclass[11pt]{amsbook}
\usepackage{amsthm}
\newtheoremstyle{parens}
{.5\baselineskip plus .2\baselineskip minus .2\baselineskip}
{.5\baselineskip plus .2\baselineskip minus .2\baselineskip}
{}
{\parindent}
{}
{}
{.5em}
{(\thmnumber{#2})\thmnote{ [#3]}}
\theoremstyle{parens}
\newtheorem{nitem}[equation]{}
\begin{document}
\begin{nitem}
This is a test of the emergency broadcasting system.
\end{nitem}
(1)\hspace*{.5em}This is a test of the emergency broadcasting system.
\begin{nitem}[Something]
This is a test of the emergency broadcasting system.
\end{nitem}
\end{document}
我使用括号来注释定理(但你可能没有)。
您无法使用 指定橡胶长度±
。您不会收到任何错误,但会出现一些警告
(\end occurred when \ifx on line 14 was incomplete)
(\end occurred when \ifx on line 14 was incomplete)
每次调用nitem
并且粘合规范都不灵活。
答案2
(应 Mensch 的要求编辑)所以也许在这里发帖可以澄清一下。我可以\newtheorem
通过简单地在该行中添加一个来解决问题并使其按预期工作\ignorespaces
,该行标记为 (*):
\documentclass[11pt]{amsbook}
\usepackage{amsthm}
\newtheoremstyle{parens}
{.5\baselineskip±.2\baselineskip}
{.5\baselineskip±.2\baselineskip}
{}
{\parindent}
{}
{)}
{.5em}
{}
{}
\theoremstyle{parens}
\newtheorem{nitem}[equation]{(\ignorespaces} %(*)
\begin{document}
\begin{nitem}
This is a test of the emergency broadcasting system.
\end{nitem}
(1)\hspace*{.5em}This is a test of the emergency broadcasting system.
\end{document}
答案3
鉴于唯一的“标记”是括号中的数字,编排amsthm
包的机制可能有点过头了。使用包的机制enumitem
可能更直接。
如果不想让定理文本以斜体显示,请\itshape
从before
选项中删除。如果不想使用悬挂缩进,请更改left=0pt
为wide=0pt
。
\documentclass[11pt]{amsbook}
\usepackage{lipsum} % filler text
\usepackage{enumitem} % for \newlist and \setlist macros
\newlist{nitem}{enumerate}{1}
\setlist[nitem]{label = \upshape(\arabic*),
ref = \upshape\arabic*,
resume,
left = 0pt,
before= {\vspace{0.5\baselineskip}\item\itshape},
after = {\vspace{0.5\baselineskip}}
}
\begin{document}
\noindent\lipsum[1][1-3]
\begin{nitem}
This is a test of the emergency broadcasting system.
\end{nitem}
\noindent\lipsum[1][4-6]
\begin{nitem}
This is another test of the emergency broadcasting system. This is another test of the emergency broadcasting system.
\end{nitem}
\noindent\lipsum[1][7-9]
\begin{nitem} \label{item:yet_another}
This is yet another test of the emergency broadcasting system. This is yet another test of the emergency broadcasting system.
\end{nitem}
\noindent\lipsum[1][10-12]
\bigskip
A cross-reference to ``theorem'' \ref{item:yet_another}.
\end{document}