
Como posso definir os ambientes do teorema de forma que obtenha o seguinte comportamento:
O código que gera o exemplo:
\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}
Responder1
Para que os
reflection
ambientes sejam numerados consecutivamente --1
,2
, etc --eser redefinido cada vez que um ambiente novoproposition
ou novoquestion
aparecer, você deve excluir a instrução\renewcommand{\thereflection}{}
e substituí-la por\makeatletter \@addtoreset{reflection}{proposition} \@addtoreset{reflection}{question} \makeatother
ou, de forma equivalente e também mais sucinta, conforme apontado por @egreg em um comentário,
\counterwithin*{reflection}{proposition} \counterwithin*{reflection}{question}
(Isso funciona porque
\counterwithin*{reflection}{proposition}
é equivalente a\makeatletter \@addtoreset{reflection}{proposition} \makeatother
.)Para que o número do
reflection
ambiente seja prefixado comproposition
ou oquestion
número (o que ocorreu mais recentemente), enquanto ainda executa uma redefinição sempre que um ambienteproposition
ouquestion
for encontrado, você ainda deve excluir a instrução\renewcommand{\thereflection}{}
, mas agora deve substituí-la por\usepackage{etoolbox} \AtBeginEnvironment{proposition}{\counterwithin{reflection}{proposition}} \AtBeginEnvironment{question}{\counterwithin{reflection}{question}}
A propósito, se você quiser que os contadores
proposition
equestion
sejam zerados cada vez que osection
contador for incrementado através de uma\section
diretiva, você deve alterar\renewcommand{\theproposition}{\thesection.\arabic{proposition}}
e
\renewcommand{\thequestion}{\thesection.\arabic{question}}
para
\counterwithin{proposition}{section}
e
\counterwithin{question}{section}
respectivamente. Alternativamente, elimine as duas
\renewcommand
declarações e altere as declarações\newtheorem{proposition}{Proposition}
e
\newtheorem{question}{Question}
para
\newtheorem{proposition}{Proposition}[section]
e
\newtheorem{question}{Question}[section]
respectivamente.
Aliás, a segunda e a terceira instâncias do \theoremstyle{definition}
seu código são redundantes e poderiam (deveriam?!) ser omitidas.
Responder2
Você pode numerar facilmente reflection
de acordo com proposition
ou 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}
É um pouco mais complicado se você quiser adicionar o número proposition
ou 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}