新环境出现参数 xargs.Missing Number 和 Illegal unit of measure

新环境出现参数 xargs.Missing Number 和 Illegal unit of measure

我正在尝试创建一个通用环境,用于用缩进的主体(证明、定义等)划分数学部分。

我发现使用“changepage”包中的“adjustwidth”环境正是我缩进所需要的。

为了营造总体环境,我按照此链接中的答案进行操作:

是否有与 \renewcommand 等效的 \renewtheorem,使用 amsthm 而不是 ntheorem?

我想要的语法如下:

\begin{env-name}{Header}{Counter}[Punctuation][Note][indentation-size]对于编号环境

\begin{env-name}{Header}[Punctuation][Note][indentation-size]对于未编号的环境

并会产生以下内容:(未编号)

{标题}[标点符号] [注释] \n

[缩进,缩进大小] 正文...

我对 latex2e(或其他)语言还很陌生,但我检查了环境定义,找不到可能出现的问题。

下面是我的包文件,其中包含我认为重现错误的最低要求。

\RequirePackage{changepage}
\RequirePackage{amsthm}
\RequirePackage{amsmath}
\RequirePackage{amsfonts}
\RequirePackage{xargs}

%--------------------------------------------------------------------------
%                        Package Options/Commands
%--------------------------------------------------------------------------

% Blank commands used for a abstract math environment

\newcommand{\mathsecheader}{}
\newcommand{\mathsecpunc}{}

% reset blank commands

\newcommand{\reset}{%
\renewcommand{\mathsecheader}{}%
\renewcommand{\mathsecpunc}{}%
}

%--------------------------------------------------------------------------
%                                Main body
%--------------------------------------------------------------------------

\newtheoremstyle{augmented_remark}
{0.5\topsep}
{0.5\topsep}
{\normalfont}
{}
{\itshape}
{}
{}
{\thmname{#1}\thmnumber{ #2}\mathsecpunc\thmnote{ #3}\newline}

\theoremstyle{augmented_remark}
\newtheorem*{tremark_unnumbered}{\mathsecheader}

\newenvironmentx*{remark_unnumbered}[4][2={:},3={ },4={0pt},usedefault]%
{\ignorespaces%
\renewcommand{\mathsecheader}{#1}%
\renewcommand{\mathsecpunc}{#2}%
\begin{tremark_unnumbered}[#3]%
\begin{adjustwidth}{#4}{#4}%
}
{\end{adjustwidth}\end{tremark_unnumbered}\reset\ignorespacesafterend}

下面是我用来编译文档的实际 .tex 文件。

% Testing document for proof formatting
\documentclass{article}

\usepackage{dummy_test}

\begin{document}

\begin{remark_unnumbered}{Claim}[.][Hello][2ex]
hello
\end{remark_unnumbered}

\end{document}

我不确定这是否有用,但我正在使用 TeXMaker 和 MikTex 进行编译。以下是我收到的两个错误打印输出:

! Missing number, treated as zero.
<to be read again>
\relax
l.8 ...in{remark_unnumbered}{Claim}[.][Hello][2ex]
A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Illegal unit of measure (pt inserted).
<to be read again>
\relax
l.8 ...in{remark_unnumbered}{Claim}[.][Hello][2ex]
Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I'll assume that you meant to say pt, for printer's points.
To recover gracefully from this error, it's best to
delete the erroneous units; e.g., type `2' to delete
two letters. (See Chapter 27 of The TeXbook.)

解决方案备注:

标记的解决方案修复了错误,我发现为了让正文位于下一行,\hfill在后面添加了\begin{tremark_unnumbered}[#3]。谢谢你的帮助。

答案1

最后一个参数必须\newtheoremstyle是长度。

\newtheoremstyle{augmented_remark}
  {0.5\topsep}
  {0.5\topsep}
  {\normalfont}
  {}
  {\itshape}
  {}
  {0pt} %   <---------
  {\thmname{#1}\thmnumber{ #2}\mathsecpunc\thmnote{ #3}\newline}

但是,我对三个“可选”参数实际上是必需的这一点有几点怀疑。至少你应该交换一下第一个和第二个可选参数。

顺便说一句,\newline什么都不做。你可以删除\ignorespaces\ignorespacesafterend

相关内容