新环境计数器问题

新环境计数器问题

我正在为类似于 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或其他带有特殊字符的名称,您将收到一条错误消息。

如果您希望questions 具有与Alemmas 不同的编号(看起来是这样的),那么您应该只定义questionwith\newtheorem而不是尝试修改Alemma

相关内容