goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

chemmacros: eigene Tags erstellen?

 

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2018, 10:30     Titel: chemmacros: eigene Tags erstellen?
  Antworten mit Zitat      
Hallo!

Man kann mit dem chemmacros-Paket eigene Reaktionsgleichungen definieren und auch die Formatierung der Tags ändern, z.B. von {1} zu [R 1]. Das ist auch alles soweit kein Problem. Ist es denn generell möglich, eigene Reaktionsumgebungen mit Eigenen Tags zu kombinieren?

Code • Öffne in Overleaf
\begin{reaction}
A+B<=>C+D
\end{reaction}


Liefert dann die Gleichung mit dem Tag [R 1].

Ich hätte gerne zusätzlich zu dieser Standardumgebung noch folgendes:

[code]
\begin{cell}
A|B||C|D
\end{cell}
[\code]

Das soll die "Gleichung" genau so setzen, wie es die erste Umgebung auch tut, nur als Tag soll [Z 1] erscheinen.

Da ich leider keinen Ansatz hierzu gefunden habe, kann ich kein MWE posten. Daher wäre ich auch für Tipps wonach ich suchen soll dankbar!

Stamm-
Gast

Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2018, 14:27     Titel: Vollständigkeit herstellen
  Antworten mit Zitat      
Die Beschreibung der gewünschten Darstellung und auch der dabei auftretenden Probleme wird durch ein Minimaibeispiel sinnvoll ergänzt und erst damit komplettiert.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2018, 14:35     Titel:
  Antworten mit Zitat      
Wieso wird eigentlich reflexartig nach einem MWE geschrien, wenn ich doch bereits im Startpost geschrieben habe, dass ich KEINE Ahnung habe wie man das umsetzen könnte. Soll ich jetzt ein leeres Dokument als MWE posten oder was?

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2018, 16:07     Titel:
  Antworten mit Zitat      
Naja, zumindest mir hätte ein Beispiel von dem Code, den Du jetzt schon für reaction hast, geholfen, besser in die Sache reinzukommen. Schließlich hast Du ja schon gewisse Anpassungen durchgeführt, die ich jetzt selbst nachbauen musste. Bei TeX.SE schreibe ich immer, dass ein Beispiel nicht nur sicherstellt, dass alle wirklich über dasselbe reden, und daher schon sinnvoll ist, sondern auch, dass es ein Zeichen der Höflichkeit ist. Die Fragestellerin zeigt damit, dass sie die Zeit der Helferinnen nicht dadurch geringschätzt, dass sie sie zunächst reproduzieren lässt, was bei der schon längst fertig vorhanden ist. In diesem Fall hätte ich wohl nicht nach einem InfoMinimalbeispiel gefragt, ein paar Minuten Arbeit hätte es mir aber schon erspart.

Nun gut, wie dem auch sei. Es scheint mir so, als gäbe es kein Interface, um einfach so eine neue Umgebung mit eigenem, neuen Zähler zu erstellen.
Daher habe ich einigen internen Code von chemmacros kopieren und leicht anpassen müssen. Eventuell wäre das also etwas für ein Feature-Request, wenn Du das häufiger benötigst.

Code • Öffne in Overleaf
\documentclass[ngerman]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage{chemmacros}
\usepackage{amsmath}
\usepackage{cleveref}

\chemsetup{modules=reactions}

\chemsetup[reactions]{
  before-tag = R\space,
  tag-open = [ ,
  tag-close =
]
}
\newtagform{cell}[Z ]{[}{]}

% alles aus dem chemmacros-Modul `reactions' geklaut
% und reaction mit cell ersetzt
\makeatletter
\ExplSyntaxOn
\newcounter {chemmacros_save_cell}
\newcounter {cell}

\cs_new_protected:Npn \__chemmacros_begin_cell:
  {
    \patchcmd \thecell {cell
} {equation} {} {}
    \cs_set_eq:NN \theequation \thecell
    \cs_set_eq:NN \r@equation \r@cell
    \cs_set_eq:NN \p@equation \p@cell
    \cs_set:Npn \theHequation { C . \theHsection . \theequation
}
    \setcounter {chemmacros_save_cell} { \value {equation} }
    \setcounter {equation} { \value {cell} }
    \chemmacros_if_package_loaded:nT {cleveref}
      { \crefalias {equation} {cell} }
    \usetagform {cell}
  }

\cs_new_protected:Npn \__chemmacros_end_cell:
  {
    \setcounter {cell
} { \value {equation} }
    \setcounter {equation} { \value {chemmacros_save_cell} }
  }


\tl_new:N \l__chemmacros_cells_args_tl

\cs_new_protected:Npn \__chemmacros_cells_build_args:n #1
  { \tl_put_right:Nn \l__chemmacros_cells_args_tl { {## #1} } }

\cs_new_protected:Npn \chemmacros_define_cell:nnn #1#2#3
  {
    \int_compare:nNnT {#3+0
} > {0}
      {
        \tl_clear:N \l__chemmacros_cells_args_tl
        \int_step_function:nnnN {2
} {1} {#3+1} \__chemmacros_cells_build_args:n
      }
    \chemmacros_declare_cell_env:nnnV {#1} {#2} {#3} \l__chemmacros_cells_args_tl
  }

% #1: chem
% #2: math
% #3: args number
% #4: argument list ({#2}{#3}...)
\cs_new_protected:Npn \chemmacros_declare_cell_env:nnnn #1#2#3#4
  {
    \exp_args:Nnx \DeclareDocumentEnvironment {#1
} { O{} \prg_replicate:nn {#3+0} {m} }
      {
%        \chemmacros_add_reaction_description:n {##1}
        \__chemmacros_begin_cell:
        \chemmacros_reaction_read:nnw {#2} {#4}
      }
      {
        \__chemmacros_end_cell:
        \ignorespacesafterend
     
}
  }
\cs_generate_variant:Nn \chemmacros_declare_cell_env:nnnn {nnnV}

\NewChemMacroset* {Cell} {mO{}m}
  { \chemmacros_define_cell:nnn {#1} {#3} {#2} }
\ExplSyntaxOff
\makeatother

\NewChemCell {cell}   {equation}
\NewChemCell {cell*}  {equation*}
\NewChemCell {cells}  {align}
\NewChemCell {cells*} {align*}

\ChemCleverefSupport{cell}{Zelle}{Zellen}%??
\creflabelformat{cell}{#2[#1]#3}

\begin{document}
\begin{reaction}
A+B<=>C+D\label{r}
\end{reaction}

\begin{cell}
A|B||C|D\label{c}
\end{cell}

\cref{r} and \cref{c}

\ref{r} and \ref{c}

\begin{reaction}
A+B<=>C+D
\end{reaction}

\begin{cell}
A|B||C|D
\end{cell}
\begin{cell}
A|B||C|D
\end{cell}
\begin{cell}
A|B||C|D
\end{cell}

\begin{reaction}
A+B<=>C+D
\end{reaction}

\begin{cell}
A|B||C|D
\end{cell}
\end{document}

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2018, 07:48     Titel:
  Antworten mit Zitat      
Danke, das erfüllt seinen Zweck anscheinend perfekt!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2018, 08:03     Titel:
  Antworten mit Zitat      
Ist aber wie gesagt etwas sehr umständlich. Mit ein paar Änderungen im Paket selbst könnte es wesentlich leichter werden. Wenn Du das also häufiger als dieses eine Mal benötigst, solltest Du auf jeden Fall mal bei https://github.com/cgnieder/chemmacros/issues vorbeischauen und den Vorschlag für eine Erweiterung da lassen. Als Paketautor freut man sich immer, wenn sinnvolle Vorschläge zur Verbesserung kommen, selbst wenn man sie aus nicht sofort umsetzen kann.

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2018 goLaTeX.de