PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Variablen im Text kontinuierlich nummerieren ? [Harte Nuss !!]



Zeno
11-09-2009, 13:25
Hallo!

Ich nutze in einer Arbeit unmengen an Variablen (z.B. $v_{16}$), die
ich durchnummeriere.
Jetzt möchte ich, dass die Nummerierung der Variablen entsprechend
ihrer Einführung geschieht. D.h. wenn ich v_1 bis v_23423 habe, dann will ich

"Wir setzen v_1 = 100
und v_23423 = 1 ..."

vermeiden und stattdessen möchte ich

"Wir setzen v_1 = 100
und v_2 = 1 ..."

Ich stelle mir das als Map-Datenstrucktur vor, die von meiner Nummerierung auf eine sortierte Nummerierung zugreift.

Hat jemand eine Idee oder schon fertigen code?

alexraasch
11-09-2009, 13:36
Ich versteh die Aufgabe nicht ganz: Du willst v_2 im Quelltext schreiben und erscheinen soll aber v_23423?

Zeno
11-09-2009, 13:50
Ich versteh die Aufgabe nicht ganz: Du willst v_2 im Quelltext schreiben und erscheinen soll aber v_23423?

Genau, ich möchte, dass nach der Einführung der Variable v_i die Variable v_i+1 kommt und nicht eine Variable v_irgendwas. Sonst ist man beim Lesen verwirrt und fragt sich, was mit den Variablen v_i+1 bis v_irgendwas-1 geschehen ist :) .

Wenn man was aufschreibt kommt es leider oft vor, dass man was im Text ergänzen möchte und dann ist die Konstanten oder Variabelnummerierung nicht mehr kontinuierlich.

Xenara
11-09-2009, 13:59
Sorry, ich verstehe es trotzdem nicht.

Definierst du die Variablen im Text selbst? Also schreibst du es so V1 = 55, V2 = 45 und es geht dir nur darum, nicht von Hand "V1", "V2" schreiben zu müssen? Das wäre ja einfach mit einem newcounter zu lösen.
Oder musst du später auf die Variablen wieder zurückgreifen? Oder auf den Wert, der der Variablen zugewiesen ist?
Oder hast du die Variablen in einer Extradatei und willst sie einlesen?

Mach doch bitte ein etwas ausführlicheres Beispiel, am besten mit lauffähigem Code, das dein bisheriges Problem zeigt oder schildere den Anwendungszweck.

u_fischer
11-09-2009, 14:18
Ein kontinuierliche Nummerierung ist überhaupt keine Problem: LaTeX nummeriert doch auch Kapitel durch und wenn man ein weitere Kapitel dazwischen schiebt, werden die Nummern angepasst.

Hauptproblem ist wie du dir die Eingabe vorstellst. Wie soll eine neue Variable erzeugt werden und wie willst du später erneut auf sie zugreifen?

Zeno
11-09-2009, 14:19
Sorry, ich verstehe es trotzdem nicht.

Definierst du die Variablen im Text selbst? Also schreibst du es so V1 = 55, V2 = 45 und es geht dir nur darum, nicht von Hand "V1", "V2" schreiben zu müssen? Das wäre ja einfach mit einem newcounter zu lösen.
Oder musst du später auf die Variablen wieder zurückgreifen? ...

Genau das ist das Problem. Ich muss auf die Variablen zurückgreifen.
Ein newcounter funktioniert daher nicht. Sonst hätte ich einfach bei den Theoremumgebungen abschauen können.

Zeno
11-09-2009, 14:22
Ein kontinuierliche Nummerierung ist überhaupt keine Problem: LaTeX nummeriert doch auch Kapitel durch und wenn man ein weitere Kapitel dazwischen schiebt, werden die Nummern angepasst.

Hauptproblem ist wie du dir die Eingabe vorstellst. Wie soll eine neue Variable erzeugt werden und wie willst du später erneut auf sie zugreifen?

Genau das weiss ich ja gerade nicht. Man bräuchte eine Map-Datenstrucktur.
Möglich ist es in jedem Fall, da LaTeX Turingvollständig ist.
Leider habe ich LaTeX bisher nur zum Text setzen genutzt.

Charlie M.
11-09-2009, 14:29
Du müsstest deine Variable durch eine "flexible Variable" ersetzen, die eine eigenen couter enthält, der dann von alleine hochzählt. So in etwa wie hier (http://www.lkenhagen.de/ueben_fuer_die_diplomarbeit_besser_latexen_mit_pst ricks_und_psfrag). Nur beachten, was über den counter gesagt wird.

Xenara
11-09-2009, 14:42
Was soll beim Referenzieren ausgegeben werden? Der Wert oder der Name?

Also bei V1 = 55 soll es dann später V1 heissen oder willst du die 55?

u_fischer
11-09-2009, 14:52
Nein, ich wollte wissen, wie stellst du dir die Eingabe vor? Wie willst du Variablen in der Eingabe identifizieren? Über einen Namen? Zeig mal das Beispiel einer Eingabe und beschreib, welche Ausgabe du erhalten willst.

Zeno
23-09-2009, 15:08
Nein, ich wollte wissen, wie stellst du dir die Eingabe vor? Wie willst du Variablen in der Eingabe identifizieren? Über einen Namen? Zeig mal das Beispiel einer Eingabe und beschreib, welche Ausgabe du erhalten willst.

Eingabe
------------
blable c[12] blable c[14] bla c[100] bla \ldots
------------

Ausgabe
------------
blable c_1 blable c_2 bla c_3 bla ...
------------

Xenara
23-09-2009, 15:56
Ich hab da mal was gebastelt. Es ist so eingerichtet, dass man auf die Variablen später auch wieder verweisen kann. Wenn du die Variable zum ersten Mal aufrufst, musst du sie mit \varneu deklarieren, später kannst du sie mit \var wieder aufrufen, und die Nummer bleibt stets die gleiche.

Vielleicht kommt das in etwa an deine Vorstellungen ran.
Hier das MB:


\documentclass[a4paper,12pt,oneside]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}


% Von http://www.lkenhagen.de/ueben_fuer_die_diplomarbeit_besser_latexen_mit_pst ricks_und_psfrag
% und angepasst:
\newcounter{variablenzaehler}
\newcommand{\VarDef}[1]{\refstepcounter{variablenzaehler}\label{#1}} %Def. d. Verb.
\newcommand{\VarRef}[1]{c\textsubscript{\ref{#1}}} %Referenzieren der Verb

% Alles etwas einfacher:

% Beim ersten Aufrufen der Variablen wir definiert und gleichzeitig ausgegeben:
\newcommand{\varneu}[1]{%
\VarDef{#1}%
\VarRef{#1}%
}
% Beim nächsten Mal wird nur noch drauf zurückgegriffen:
\newcommand{\var}[1]{\VarRef{#1}}



\begin{document}

\varneu{hier-was} Defintion: hier-was

\varneu{da} Defintion: da

\varneu{5} Defintion: 5

\var{hier-was} Aufruf: hier-was

\varneu{bla} Defintion: bla

\var{5} Aufruf: 5

\var{da} Aufruf: da

\var{bla} Aufruf: bla

\var{hier-was} Aufruf: hier-was

\end{document}

alexraasch
24-09-2009, 10:44
Schau Dir mal das Paket constants (http://theory.uwinnipeg.ca/scripts/CTAN/macros/latex/contrib/constants/constants.pdf) an, es scheint genau das zu tun, was Du suchst.

Zeno
13-10-2009, 15:15
Ich hab da mal was gebastelt. Es ist so eingerichtet, dass man auf die Variablen später auch wieder verweisen kann. Wenn du die Variable zum ersten Mal aufrufst, musst du sie mit \varneu deklarieren, später kannst du sie mit \var wieder aufrufen, und die Nummer bleibt stets die gleiche.

Vielleicht kommt das in etwa an deine Vorstellungen ran.
Hier das MB:


\documentclass[a4paper,12pt,oneside]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}


% Von http://www.lkenhagen.de/ueben_fuer_die_diplomarbeit_besser_latexen_mit_pst ricks_und_psfrag
% und angepasst:
\newcounter{variablenzaehler}
\newcommand{\VarDef}[1]{\refstepcounter{variablenzaehler}\label{#1}} %Def. d. Verb.
\newcommand{\VarRef}[1]{c\textsubscript{\ref{#1}}} %Referenzieren der Verb

% Alles etwas einfacher:

% Beim ersten Aufrufen der Variablen wir definiert und gleichzeitig ausgegeben:
\newcommand{\varneu}[1]{%
\VarDef{#1}%
\VarRef{#1}%
}
% Beim nächsten Mal wird nur noch drauf zurückgegriffen:
\newcommand{\var}[1]{\VarRef{#1}}



\begin{document}

\varneu{hier-was} Defintion: hier-was

\varneu{da} Defintion: da

\varneu{5} Defintion: 5

\var{hier-was} Aufruf: hier-was

\varneu{bla} Defintion: bla

\var{5} Aufruf: 5

\var{da} Aufruf: da

\var{bla} Aufruf: bla

\var{hier-was} Aufruf: hier-was

\end{document}


Toll :). Das ist genau das, was ich gebraucht hätte. Ich speichere das mal ab.