
如何定義定理環境以獲得以下行為:
產生範例的程式碼:
\documentclass[10pt,a4paper]{article}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{proposition}{Proposition}
\renewcommand{\theproposition}{\thesection.\arabic{proposition}}
\newcommand{\propositionautorefname}{Proposition}
\theoremstyle{definition}
\newtheorem{question}{Question}
\renewcommand{\thequestion}{\thesection.\arabic{question}}
\newcommand{\questionautorefname}{Q.}
\theoremstyle{definition}
\newtheorem{reflection}{Reflection}
\renewcommand{\thereflection}{}
\newcommand{\reflectionautorefname}{Reflection}
\begin{document}
\begin{proposition}
My proposition
\begin{reflection}
My reflection should be numbered 0.1.1. or 1
\end{reflection}
\begin{reflection}
My reflection should be numbered 0.1.2. or 2
\end{reflection}
\end{proposition}
\begin{question}
My question
\begin{reflection}
My reflection should be numbered 0.1.1. or 1
\end{reflection}
\begin{reflection}
My reflection should be numbered 0.1.2. or 2
\end{reflection}
\end{question}
\end{document}
答案1
讓
reflection
環境連續編號 --1
、2
等 --和每次出現新環境時都會重置,您應該刪除該指令proposition
並將其替換為question
\renewcommand{\thereflection}{}
\makeatletter \@addtoreset{reflection}{proposition} \@addtoreset{reflection}{question} \makeatother
或者,同樣且更簡潔,正如 @egreg 在評論中指出的那樣,
\counterwithin*{reflection}{proposition} \counterwithin*{reflection}{question}
(這有效,因為
\counterwithin*{reflection}{proposition}
相當於\makeatletter \@addtoreset{reflection}{proposition} \makeatother
。)要取得以或數字(以最近發生的為準)
reflection
為前綴的環境編號,同時在遇到或環境時仍然執行重置,您仍然應該刪除該指令,但現在您應該將其替換為proposition
question
proposition
question
\renewcommand{\thereflection}{}
\usepackage{etoolbox} \AtBeginEnvironment{proposition}{\counterwithin{reflection}{proposition}} \AtBeginEnvironment{question}{\counterwithin{reflection}{question}}
順便說一句,如果您希望每次通過指令遞增計數器時重置
proposition
和計數器,您應該更改question
section
\section
\renewcommand{\theproposition}{\thesection.\arabic{proposition}}
和
\renewcommand{\thequestion}{\thesection.\arabic{question}}
到
\counterwithin{proposition}{section}
和
\counterwithin{question}{section}
分別。或者,刪除這兩個
\renewcommand
語句並更改語句\newtheorem{proposition}{Proposition}
和
\newtheorem{question}{Question}
到
\newtheorem{proposition}{Proposition}[section]
和
\newtheorem{question}{Question}[section]
分別。
順便說一句,程式碼中的第二個和第三個實例\theoremstyle{definition}
是多餘的,可以(應該?!)省略。
答案2
您可以reflection
根據proposition
或輕鬆編號question
:
\documentclass[10pt,a4paper]{article}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{proposition}{Proposition}[section]
\newcommand{\propositionautorefname}{Proposition}
\newtheorem{question}{Question}[section]
\newcommand{\questionautorefname}{Q.}
\newtheorem{reflection}{Reflection}
\newcommand{\reflectionautorefname}{Reflection}
\counterwithin*{reflection}{proposition}
\counterwithin*{reflection}{question}
\begin{document}
\section{Title}
\begin{proposition}
My proposition
\begin{reflection}
My reflection should be numbered 1
\end{reflection}
\begin{reflection}
My reflection should be numbered 2
\end{reflection}
\end{proposition}
\begin{question}
My question
\begin{reflection}
My reflection should be numbered or 1
\end{reflection}
\begin{reflection}
My reflection should be numbered or 2
\end{reflection}
\end{question}
\end{document}
如果你想添加proposition
或question
數字,那就有點複雜了。
\documentclass[10pt,a4paper]{article}
\usepackage{amsthm}
\theoremstyle{definition}
\newtheorem{propositioninner}{Proposition}[section]
\newcommand{\propositioninnerautorefname}{Proposition}
\newenvironment{proposition}
{%
\renewcommand{\PropositionOrQuestion}{\thepropositioninner}%
\propositioninner
}
{\endpropositioninner}
\newtheorem{questioninner}{Question}[section]
\newcommand{\questioninnerautorefname}{Q.}
\newenvironment{question}
{%
\renewcommand{\PropositionOrQuestion}{\thequestioninner}%
\questioninner
}
{\endquestioninner}
\newcommand{\PropositionOrQuestion}{}
\newtheorem{reflection}{Reflection}
\newcommand{\reflectionautorefname}{Reflection}
\counterwithin*{reflection}{propositioninner}
\counterwithin*{reflection}{questioninner}
\renewcommand{\thereflection}{\PropositionOrQuestion.\arabic{reflection}}
\begin{document}
\section{Title}
\begin{proposition}
My proposition
\begin{reflection}
My reflection should be numbered 1.1.1
\end{reflection}
\begin{reflection}
My reflection should be numbered 1.1.2
\end{reflection}
\end{proposition}
\begin{question}
My question
\begin{reflection}
My reflection should be numbered or 1.1.1
\end{reflection}
\begin{reflection}
My reflection should be numbered or 1.1.2
\end{reflection}
\end{question}
\end{document}