我正在为类似于 Question 环境的环境使用以下代码:
\documentclass[12pt,b5paper,twoside]{book}
\usepackage{amsmath,amsthm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\theoremstyle{splcommon}
\newtheorem{Alemma}{Question}
\renewcommand\theAlemma{\Alph{Alemma}}
\newenvironment{question}[1]{%
\renewcommand\theAlemma{\thechapter-\Alph{Alemma}}%
\Alemma
}{\endAlemma}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\chapter{title}
\section{Questions}
\begin{question}
this is a question
\end{question}
\begin{question}
this is a question
\end{question}
\begin{question}
this is a question
\end{question}
\begin{question}
this is a question
\end{question}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{title}
\section{Questions}
\begin{question}
this is a question
\end{question}
\begin{question}
this is a question
\end{question}
\begin{question}
this is a question
\end{question}
\begin{question}
this is a question
\end{question}
\end{document}
但这有三个主要问题。当我向\label{}
其中添加时,它会产生错误。其次,它的计数器不会按章节重置,并且它会删除环境文本的首字母。
答案1
为了获得按章节编号的类似定理的环境,您需要在的最后一个参数后使用可选参数\newtheorem
来指定按章节编号:
\newtheorem{Alemma}{Question}[chapter]
接下来,为了获得所需的编号样式(带有字母,您应该将命令更新\theAlemma
为:
\renewcommand{\theAlemma}{\thechapter-\Alph{Alemma}}
不清楚您定义的问题环境发生了什么。当您[1]
在命令中指定时\newenvironment
,您是在告诉 LaTeX 它\begin{question}
需要一个必需的参数。它会向前看,由于您没有指定这样的参数,它会抓取环境的首字母,这不是您想要的,但正是您告诉它要做的事情。我猜您遇到的问题与\label
此有关——如果您将 放在环境\label
的开头question
,那么\label
它将被视为参数并被丢弃,如果您有一个标签名称,如foo_bar
或其他带有特殊字符的名称,您将收到一条错误消息。
如果您希望question
s 具有与Alemma
s 不同的编号(看起来是这样的),那么您应该只定义question
with\newtheorem
而不是尝试修改Alemma
。