我正在尝试创建一个通用环境,用于用缩进的主体(证明、定义等)划分数学部分。
我发现使用“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
。