Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Formelsatz für Mathematik, Naturwissenschaften und Technik


mimiling
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 4. Jul 2020, 18:55

Zusammenfassen der Zähler von Chemie- und Matheumgebungen

Beitrag 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

Zuletzt geändert von mimiling am Do 20. Aug 2020, 16:29, insgesamt 1-mal geändert.

gast

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

Beitrag 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:

Code: Alles auswählen

\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.


mimiling
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Sa 4. Jul 2020, 18:55

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

Beitrag 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?


gast

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

Beitrag 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.


Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 705
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

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

Beitrag von cgnieder »

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

Code: Alles auswählen

\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:

Code: Alles auswählen

\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):

Code: Alles auswählen

\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}
Clemens

Antworten