Seite 1 von 1

Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Verfasst: Sa 4. Jul 2020, 19:08
von mimiling

Liebes Forum,

wie der Titel schon sagt, möchte ich eine fortlaufende Nummerierung aller Gleichungen erhalten und zwar unabhängig davon, ob es sich um eine chemische (z. B. "reaction") oder mathematische (z. B. "align") Gleichung handelt.
Hier ein kleines Minimal-Beispiel:

\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{chemmacros}\chemsetup[nomenclature]{hyphen-post-space=0pt, iupac=auto}
\usepackage{upgreek}
\usepackage[version=4]{mhchem}
\usepackage{ghsystem}
\usechemmodule{redox, reactions}

\begin{document}

\begin{align}
\ce{Ca(OH)2 + H2CO3 -> CaCO3 + 2 H2O} \\
\ce{Ca2+ + 2 OH- + 2 H+ + CO32- -> CaCO3 + 2 H2O}
\end{align}

\begin{reaction}
1/5 K "\ox{7,Mn}" O4 -> (1/10) "\ox{2,Mn}" Cl2
\end{reaction}

\end{document}

Mein Ziel ist, dass die unterste Gleichung in diesem Fall Gleichung Nummer 3 wäre.
(Dass die Chemie im Beispiel nicht stimmt, ist mir selbstverständlich bewusst.)

Ich hoffe, jemand weiß eine Lösung.

Viele Grüße,
mimiling


Re: Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Verfasst: Sa 4. Jul 2020, 19:58
von gast

Das ist eigentlich genau nicht vorgesehen. Man kann aber mit xpatch die Umgebung, aus dem reactions-Modul die Verwendung des Zählers reaction herauspatchen:

\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{chemmacros}\chemsetup[nomenclature]{hyphen-post-space=0pt, iupac=auto}
\usepackage{upgreek}
\usepackage[version=4]{mhchem}
\usepackage{ghsystem}
\usechemmodule{redox, reactions}

\usepackage{xpatch}
\ExplSyntaxOn

\xpatchcmd{ \__chemmacros_begin_reaction: }
  {
    \setcounter {equation} { \value {reaction} }
  } { } { } { \PatchFaiLure }

\xpatchcmd{ \__chemmacros_end_reaction: }
  {
    \setcounter {equation} { \value {chemmacros_save_reaction} }
  } { } { } { \PatchFaiLure }

% Nachfolgender Patch ist nur notwendig, wenn reaction kein eigenes Tag-Format verwenden soll
\xpatchcmd{ \__chemmacros_begin_reaction: }
  {
    \usetagform {reaction}
  } { } { } { \PatchFaiLure }

\ExplSyntaxOff

\begin{document}

\begin{align}
\ce{Ca(OH)2 + H2CO3 -> CaCO3 + 2 H2O} \\
\ce{Ca2+ + 2 OH- + 2 H+ + CO32- -> CaCO3 + 2 H2O}
\end{align}

\begin{reaction}
1/5 K "\ox{7,Mn}" O4 -> (1/10) "\ox{2,Mn}" Cl2
\end{reaction}

\begin{align}
  a &= b
\end{align}

\end{document}

Natürlich gibt es bei solchen Hacks keine Garantie, dass das auch in Zukunft noch funktioniert. Ich würde daher einen Feature-Request an den Autor empfehlen. Vielleicht kann er ja eine Option hinzufügen, um die Verwendung des eigenen Zählers abschaltbar zu machen.

BTW: Das Paket hat auch eine Option, um tocbasic zu verwenden und sich so besser an die verwendete KOMA-Script-Klasse anzulehnen.


Re: Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Verfasst: Sa 4. Jul 2020, 20:21
von mimiling

Vielen Dank schon mal! Allerdings sieht man immer noch deutlich den Unterschied. Meine Gleichungen sind mit dem "Update" folgendermaßen nummeriert:
reaction → 1
reaction → 2
align → 2.1 (die 2 vor dem Punkt bezieht sich auf das Kapitel)
align → 2.2
reaction → 3
usw.

Eine durchgehende Nummerierung wie align (also [Kapitel].[Formelnummer]) wäre mir tatsächlich am liebsten. Der einzige Grund, warum ich überhaupt Mathe und Chemie wild durcheinander werfe, ist, dass ich unter "reaction" keinen Zeilenumbruch machen kann.

Hast du noch einen Rat für mich?


Re: Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Verfasst: Sa 4. Jul 2020, 21:10
von gast

Das stimmt weder mit dem von dir gezeigten (nicht korrekt als solcher markierten) Code noch mit meinem (korrekt als kopierbarer Code eingefügten) Beispiel überein. Die von Dir verwendete und von mir aufgegriffene Klasse hat auch gar keine Kapitel. Das Problem ist also so nicht nachvollziehbar → Minimalbeispiel.

Und ich empfehle noch einmal: Mach einen Feature-Request. Das ist westlich sinnvoller, als nachträglich an dem Paket herum zu patchen.


Re: Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Verfasst: So 5. Jul 2020, 11:15
von cgnieder

Verrückte Idee eins: nimm doch die reactions-Umgebung für ausgerichtete Reaktionen:

\documentclass{scrartcl}
\usepackage{chemmacros}
\chemsetup[nomenclature]{hyphen-post-space=0pt, iupac=auto}
\usepackage{upgreek}
\usechemmodule{redox, reactions}

\begin{document}

\begin{reactions}
  Ca(OH)2 + H2CO3 -> CaCO3 + 2 H2O \\
  Ca^2+ + 2 OH- + 2 H+ + CO3^2- -> CaCO3 + 2 H2O
\end{reactions}

\begin{reaction}
  1/5 K "\ox{7,Mn}" O4 -> (1/10) "\ox{2,Mn}" Cl2
\end{reaction}

\end{document}

Verrückte Idee zwei, die tatsächlich Mathematik und Chemie zusammen zählt: verwende ausschließlich Mathe-Umgebungen:

\documentclass{scrartcl}
\usepackage{chemmacros}
\chemsetup[nomenclature]{hyphen-post-space=0pt, iupac=auto}
\usepackage{upgreek}
\usechemmodule{redox, reactions}

\begin{document}

\begin{align}
  \ch{Ca(OH)2 + H2CO3 -> CaCO3 + 2 H2O} \\
  \ch{Ca^2+ + 2 OH- + 2 H+ + CO3^2- -> CaCO3 + 2 H2O}
\end{align}

\begin{equation}
  a^2 + b^2 = c^2
\end{equation}

\begin{equation}
  \ch{1/5 K "\ox{7,Mn}" O4 -> (1/10) "\ox{2,Mn}" Cl2}
\end{equation}

\end{document}

Noch eine Anmerkung: chemmacros verwendet von sich aus in der Regel chemformula für die chemischen Reaktionen. Wenn du lieber mhchem verwendest, solltest du das chemmacros auch machen lassen, damit du ein konsistentes Dokument erhältst (ich habe oben stattdessen auf mhchem verzichtet und \ch von chemformula verwendet):

\documentclass{scrartcl}
\usepackage{chemmacros}
\usepackage[version=4]{mhchem}
\chemsetup{
  modules={redox, reactions},
  formula = mhchem
}

\begin{document}


\begin{align}
  \ce{Ca(OH)2 + H2CO3 -> CaCO3 + 2 H2O} \\
  \ce{Ca^2+ + 2 OH- + 2 H+ + CO3^2- -> CaCO3 + 2 H2O}
\end{align}

\begin{reactions}
  Ca(OH)2 + H2CO3 -> CaCO3 + 2 H2O \\
  Ca^2+ + 2 OH- + 2 H+ + CO3^2- -> CaCO3 + 2 H2O
\end{reactions}

\end{document}