Wie kann man in TikZ Zeichenketten auf bestimmte Strukturen untersuchen, um daraufhin bedingte Anweisungen ausführen lassen zu können;

beispielsweise ist gegeben:

Open in writeLaTeX
\def \a{CH_3-CH_2-OH}

und nun soll von Links nach rechts der Inhalt von \a auf Unterstriche {_} sowie {-} untersucht werden, und im positiven Falle eine Anweisung ausführen, wobei der Inhalt (also die Buchstaben) zwischen diesen als neue Variablen gespeichert werden; die Zahl(en) nach dem Unterstrich ebenso:

Open in writeLaTeX
\def \b1{CH}
\def \z1{3}
\def \b2{CH}
\def \z2{2}
\def \b3{OH}

Wichtig wäre, dass irgendwie eine Zuordnung der Zahlen zu den jeweils zu vorigen Buchstaben erhalten bleibt.

Wie bewerkstelligt man das in TikZ? Wäre für jede Hilfe sehr dankbar.

gefragt 05 Apr '14, 19:36

rix's gravatar image

rix
3452419
Akzeptiert: 93%

bearbeitet 07 Apr '14, 10:37

Clemens's gravatar image

Clemens
19.0k113060

Mir ist unklar, wo hier der Bezug zu TikZ ist... mir scheint, als wolltest Du die Formel von Ethanol zerlegen, um ... irgendwas zu erreichen?! Übrigens: Makronamen können keine Ziffern enthalten, siehe Was sind catcodes, lccodes und uccodes? und Warum verschwindet der Leerraum nach selbst definierten Befehlen?

(07 Apr '14, 10:55) Clemens

Nur für den Fall, dass Du die Strukturformel von Ethanol zeichnen möchtest. kennst Du schon LaTeX und Chemie (3) – Strukturformeln: das „chemfig“ Paket und Can you make chemical structure diagrams in LaTeX?

(07 Apr '14, 13:04) Clemens

TikZ ist zum Programmieren von Grafiken gedacht, nicht zur Zeichenkettenverarbeitung. Dennoch gibt es natürlich jede Menge Möglichkeiten:

  • komplizierter Fußweg mit TeX
  • Verwendung von zeichenkettenverarbeitenden Paketen, wie z.B. xstring, evtl. zusammen mit etoolbox
  • Programmieren mit Lua (mit LuaLaTeX)
  • Verwendung von LaTeX3

Hier mal ein LaTeX3-Ansatz, was den Eingabetext mit l3regex zerlegt und mit neuen Befehlen zusammenfügt, was mit normalem aktuellen LaTeX läuft:

Open in writeLaTeX
\documentclass{article}
\usepackage{underscore}
\usepackage{l3regex,xparse}
\ExplSyntaxOn
\seq_new:N \l_result_seq
\NewDocumentCommand { \split } { m } {
  \regex_extract_all:nnN { [A-Z|a-z]+ | \d+ } {#1} \l_result_seq
  \seq_map_inline:Nn \l_result_seq { \item ##1 }
}
\ExplSyntaxOff
\begin{document}
  \begin{itemize}
    \split{CH_3-CH_2-OH}
  \end{itemize}
\end{document}

Ausgabe

Permanenter link

beantwortet 06 Apr '14, 16:18

stefan's gravatar image

stefan ♦♦
5.8k12234

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×4

Frage gestellt: 05 Apr '14, 19:36

Frage wurde angeschaut: 3,247 Mal

Zuletzt aktualisiert: 07 Apr '14, 13:04