Entfernen des Teils ".1" in der Nummerierung einer Bemerkung, wenn es sich um die eindeutige Bemerkung nach einem Theorem handelt

Entfernen des Teils ".1" in der Nummerierung einer Bemerkung, wenn es sich um die eindeutige Bemerkung nach einem Theorem handelt

Ich verwende das amsthmPaket und thmtoolsdas Paket, um mein Manuskript zu formatieren.

Ich nummeriere Bemerkungen innerhalb von Theoremen, das heißt,Bemerkung 2.1.,Bemerkung 2.2.und so weiter nachSatz 2Wenn jedoch nur eine Bemerkung gemacht wird nach, sagen wir,Satz 1, ich hoffe, es kann alsBemerkung 1.anstattBemerkung 1.1.

Mit der Option numbered=unless uniquein thmtoolskann die Nummerierung vollständig eliminiert werden, wodurchAnmerkung. Das ist nicht das, was ich wirklich möchte, weil ich hoffe, dass ich später bequem über die Nummerierung auf die Bemerkung verweisen kann, anstatt etwas zu sagen wie "die Bemerkung nach Theorem 1".

Unten ist ein MWE, bei dem ich nicht weiterkomme und mich frage, ob es eine schnelle Anpassung gibt, um mein Ziel zu erreichen. Vielen Dank im Voraus für mögliche Lösungen.

\documentclass{article}

\usepackage{amsthm}
\usepackage{thmtools}

\newtheorem{thm}{Theorem}
\theoremstyle{remark}
\declaretheorem[numberwithin=thm, name=Remark, numbered=unless unique]{rmk}


\begin{document}
\begin{thm}
This is a theorem.
\end{thm}

\begin{rmk} % only one remark made
This is the only remark, so number it the same as the previous theorem.
What I want is Remark 1., instead of Remark. or Remark 1.1.
\end{rmk}

\begin{thm}
This is the second theorem.
\end{thm}

\begin{rmk} % Multiple remarks
Multiple remarks follow, and this is the first.
\end{rmk}
\begin{rmk}
Since there are multiple remarks made, all of them are numbered.
\end{rmk}
\begin{rmk}
The style is Remark 2.1., 2.2., and 2.3., etc.
\end{rmk}

\end{document} 

Antwort1

Sie können das gewünschte Verhalten mithilfe des Pakets „manuell“ definieren unique. Das Folgende emuliert einfach, was thmtoolsmit gemacht wird numbered=unless unique, aber anstatt die Bemerkung unnummeriert zu machen, wenn sie eindeutig ist, wird sie \thermkauf gesetzt \thethm.

\documentclass{article}

\usepackage{amsthm}
\usepackage{thmtools}
\usepackage[unq]{unique}

\newtheorem{thm}{Theorem}
\theoremstyle{remark}
\declaretheorem[numberwithin=thm, name=Remark]{rmk}

\addtotheorempreheadhook[rmk]{%
  \setuniqmark{rmk.\thethm}%
  \ifuniq{rmk.\thethm}
    {\def\thermk{\thethm}}
    {}%
  }

\begin{document}

\begin{thm}
This is a theorem.
\end{thm}

\begin{rmk} % only one remark made
This is the only remark, so number it the same as the previous theorem.
What I want is Remark 1., instead of Remark. or Remark 1.1.
\end{rmk}

\begin{thm}
This is the second theorem.
\end{thm}

\begin{rmk} % Multiple remarks
Multiple remarks follow, and this is the first.
\end{rmk}
\begin{rmk}
Since there are multiple remarks made, all of them are numbered.
\end{rmk}
\begin{rmk}
The style is Remark 2.1., 2.2., and 2.3., etc.
\end{rmk}

\begin{thm}
bla
\end{thm}

\begin{rmk}
more bla
\end{rmk}

\end{document}

Theoreme


Es ist nicht allzu schwer, eine Taste zu definieren, die dieselbe Wirkung hat.

\documentclass{article}

\usepackage{amsthm}
\usepackage{thmtools}

\makeatletter
\define@key{thmdef}{uniquewithparent}{%
  \setkeys{thmdef}{parent=#1}
  \RequirePackage[unq]{unique}
  \addtotheorempreheadhook[\thmt@envname]{%
    \setuniqmark{\thmt@envname.\csname the#1\endcsname}%
    \ifuniq{\thmt@envname.\csname the#1\endcsname}
      {\@xa\def\csname the\thmt@envname\endcsname{\csname the#1\endcsname}}
      {}%
    }
  }
\makeatother

\newtheorem{thm}{Theorem}
\declaretheorem[uniquewithparent=section]{lemma}
\theoremstyle{remark}
\declaretheorem[name=Remark,uniquewithparent=thm]{rmk}

\begin{document}

\section{A section}

\begin{lemma}
Some text.
\end{lemma}

\begin{thm}
This is a theorem.
\end{thm}

\begin{rmk} % only one remark made
This is the only remark, so number it the same as the previous theorem.
What I want is Remark 1., instead of Remark. or Remark 1.1.
\end{rmk}

\begin{thm}
This is the second theorem.
\end{thm}

\begin{rmk} % Multiple remarks
Multiple remarks follow, and this is the first.
\end{rmk}
\begin{rmk}
Since there are multiple remarks made, all of them are numbered.
\end{rmk}

\section{Another section}

\begin{lemma}
More text.
\end{lemma}

\begin{lemma}
Even more text.
\end{lemma}

\end{document}

Mit Schlüssel

Antwort2

Mit expl3können wir die Anzahl der Bemerkungen, die einem Theorem folgen, in einer Eigenschaftsliste speichern (weitere Werte werden überschrieben, so dass wir das Maximum erhalten).

Am Ende des Laufs werden diese Werte in die AUX-Datei in der Form geschrieben

\rmklist{1=1,2=3,1=1,}

(Werte aus dem Beispiel), damit wir beim nächsten Durchlauf eine andere Eigenschaftenliste füllen können, die dann für die Prüfung herangezogen wird. Wenn die gespeicherte Zahl größer als 1 ist, .\arabic{rmk}wird verwendet.


\documentclass{article}

\usepackage{amsthm}

\newtheorem{thm}{Theorem}
\theoremstyle{remark}
\newtheorem{rmk}{Remark}[thm]
\renewcommand{\thermk}{\thethm\checkrmk}

\ExplSyntaxOn

% populate the property list for the checks
\NewDocumentCommand{\rmklist}{m}
 {
  \prop_gset_from_keyval:Nn \g_dustrain_rmk_in_prop { #1 }
 }

% check whether the number of remarks is > 1
\NewExpandableDocumentCommand{\checkrmk}{}
 {
  \__dustrain_rmk_check:e { \arabic{thm} }
 }

% at end of rmk, store the last value of rmk
\AddToHook{env/rmk/after}
 {
  \prop_gput:Nee \g_dustrain_rmk_out_prop { \arabic{thm} } { \arabic{rmk} }
 }

% at end document, write down the values in the aux file
\AtEndDocument
 {
  \iow_now:ce { @auxout }
   {
    \rmklist { \prop_map_function:NN \g_dustrain_rmk_out_prop \__dustrain_rmk_write:nn }
   }
 }

% variables
\prop_new:N \g_dustrain_rmk_out_prop
\prop_new:N \g_dustrain_rmk_in_prop

% internal functions
\cs_new:Nn \__dustrain_rmk_write:nn { #1=#2, }
\cs_new:Nn \__dustrain_rmk_check:n
 {
  \int_compare:nT { 0\prop_item:Nn \g_dustrain_rmk_in_prop { #1 } > 1 } { .\arabic{rmk} }
 }
\cs_generate_variant:Nn \__dustrain_rmk_check:n { e }

\ExplSyntaxOff


\begin{document}

\begin{thm}
This is a theorem.
\end{thm}

\begin{rmk} % only one remark made
This is the only remark, so number it the same as the previous theorem.
What I want is Remark 1., instead of Remark. or Remark 1.1.
\end{rmk}

\begin{thm}
This is the second theorem.
\end{thm}

\begin{rmk} % Multiple remarks
Multiple remarks follow, and this is the first.
\end{rmk}
\begin{rmk}
Since there are multiple remarks made, all of them are numbered.
\end{rmk}
\begin{rmk}
The style is Remark 2.1., 2.2., and 2.3., etc.
\end{rmk}

\begin{thm}
bla
\end{thm}

\begin{rmk}
more bla
\end{rmk}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen