PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : fp, xstring



Goldnas
27-07-2012, 10:46
% Beispiel (Packages welche geladen werden müssen ist xstring und fp


% Angabe für eine Funktion beispielsweise \newcommand{\meincommando}[2]{\StrRight{#1}{128}[\bsA]\StrRight{#2}{128}[\CsA]}
% Dient als Test ohne Command...
% Angabe zweier Variablen....
\StrRight{A|B|C}{128}[\bsA]
\StrRight{-0.004|-0.005|0.006}{128}[\csA]
%
\StrCount{\csA}{|}[\argcount] % Zähle Anzahl der Trennstriche (+1 = Anzahl der Variablen)
\argcount \\ % Ausgabe

\StrPosition{\csA}{|}[\first] % Finde den ersten Trennstrich
\StrSplit{\csA}{\first}{\csA}{\csB} % Splitte die Variable
\StrLen{\csA}[\cal] % Ermittle die Länge
\FPupn{cal}{cal 1 - neg} % Subtrahiere den Trennstrich
\FPclip\cal\cal % Entferne unnötige Nullen (Ohne gehts nicht)
\StrLeft{\csA}{\cal}[\csA] % Gebe den Variablenwert aus....

\StrPosition{\bsA}{|}[\first] % Finde den ersten Trennstrich
\StrSplit{\bsA}{\first}{\bsA}{\bsB}
\StrLen{\bsA}[\bal]
\FPupn{bal}{bal 1 - neg}
\FPclip\bal\bal
\StrLeft{\bsA}{\bal}[\bsA] % Gebe den Variablennamen aus....

\bsA \ \csA \\ % Test des Outputs....
\FPupn{\bsA}{\csA} % Zuweisung von Variablennamen zu Wert....

\A % Ausgabe und Test


Resultat: Null, die Frage ist wieso?

LG Goldnas

rstuby
27-07-2012, 11:01
Bitte liefere uns das nächste Mal ein lauffähiges Minimalbeispiel und nicht eine Anleitung, wie wir eins bauen sollen.
Wenn ich nach deiner Anleitung vorgehe

\documentclass[]{scrartcl}
\usepackage{fp}
\usepackage{xstring}
\begin{document}
\StrRight{A|B|C}{128}[\bsA]
\StrRight{-0.004|-0.005|0.006}{128}[\csA]
%
\StrCount{\csA}{|}[\argcount] % Zähle Anzahl der Trennstriche (+1 = Anzahl der Variablen)
\argcount \\ % Ausgabe

\StrPosition{\csA}{|}[\first] % Finde den ersten Trennstrich
\StrSplit{\csA}{\first}{\csA}{\csB} % Splitte die Variable
\StrLen{\csA}[\cal] % Ermittle die Länge
\FPupn{cal}{cal 1 - neg} % Subtrahiere den Trennstrich
\FPclip\cal\cal % Entferne unnötige Nullen (Ohne gehts nicht)
\StrLeft{\csA}{\cal}[\csA] % Gebe den Variablenwert aus....

\StrPosition{\bsA}{|}[\first] % Finde den ersten Trennstrich
\StrSplit{\bsA}{\first}{\bsA}{\bsB}
\StrLen{\bsA}[\bal]
\FPupn{bal}{bal 1 - neg}
\FPclip\bal\bal
\StrLeft{\bsA}{\bal}[\bsA] % Gebe den Variablennamen aus....

\bsA \ \csA \\ % Test des Outputs....
\FPupn{\bsA}{\csA} % Zuweisung von Variablennamen zu Wert....

\A % Ausgabe und Test
\end{document}
bekomme ich nämlich nicht das "Resultat Null", sondern eine Fehlermeldung:
Undefined control sequence \A

Goldnas
27-07-2012, 13:48
\documentclass[
12pt, % Schriftgröße
DIV10,
paper=A4, % Papierformat
final % Status des Dokuments (final/draft)
]{scrreprt}

\usepackage{scrpage2}
\usepackage[ansinew]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{datatool}
\usepackage{xstring}
\begin{document}

% Angabe für eine Funktion beispielsweise \newcommand{\meincommando}[2]{\StrRight{#1}{128}[\bsA]\StrRight{#2}{128}[\CsA]}
% Dient als Test ohne Command...
% Angabe zweier Variablen....
\StrRight{AA|B|C}{128}[\bsA]
\StrRight{-0.004|-0.005|0.006}{128}[\csA]
%
\StrCount{\csA}{|}[\argcount] % Zähle Anzahl der Trennstriche (+1 = Anzahl der Variablen)
\argcount \\ % Ausgabe

\StrPosition{\csA}{|}[\first] % Finde den ersten Trennstrich
\StrSplit{\csA}{\first}{\csA}{\csB} % Splitte die Variable
\StrLen{\csA}[\cal] % Ermittle die Länge
\FPupn{cal}{cal 1 - neg} % Subtrahiere den Trennstrich
\FPclip\cal\cal % Entferne unnötige Nullen (Ohne gehts nicht)
\StrLeft{\csA}{\cal}[\csA] % Gebe den Variablenwert aus....

\StrPosition{\bsA}{|}[\first] % Finde den ersten Trennstrich
\StrSplit{\bsA}{\first}{\bsA}{\bsB}
\StrLen{\bsA}[\bal]
\FPupn{bal}{bal 1 - neg}
\FPclip\bal\bal
\StrLeft{\bsA}{\bal}[\bsA] % Gebe den Variablennamen aus....

\bsA \ \csA \\ % Test des Outputs....
\FPupn{\bsA}{\csA} % Zuweisung von Variablennamen zu Wert....

\AA % Ausgabe und Test
%\numprint{\AA}

\end{document}


Jetzt aber... keine Fehlermeldung, kein Nulll

cgnieder
27-07-2012, 17:34
Verstehe ich richtig, dass Du aus der Ausgabe aus Sequenz eins einen Befehl machen möchtest, der die entsprechende Position aus Sequenz zwei enthält?

Ich würde vorschlagen, Dir mal die Möglichkeiten von expl3 (http://texdoc.net/pkg/interface3) anzuschauen. Damit ist es nämlich wirklich leicht:


\documentclass{article}

\usepackage{expl3,xparse}
\ExplSyntaxOn
\NewDocumentCommand\newlist{m>{\SplitList{|}}m}
{
\seq_new:c { l_goldnas_#1_seq }
\tl_map_inline:nn { #2 }
{ \seq_put_right:cn { l_goldnas_#1_seq } { ##1 } }
}

\NewDocumentCommand\assignlists{mm}
{ \goldnas_assignlists:nn { #1 } { #2 } }

\cs_new:Npn \goldnas_assignlists:nn #1#2
{
\int_compare:nTF
{ \seq_count:c { l_goldnas_#1_seq } = \seq_count:c { l_goldnas_#2_seq } }
{
\seq_set_eq:Nc \l_tmpa_seq { l_goldnas_#1_seq }
\seq_set_eq:Nc \l_tmpb_seq { l_goldnas_#2_seq }
\seq_map_inline:Nn \l_tmpa_seq
{
\seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
\cs_if_exist:cTF { ##1 }
{
Sorry!~Command~\texttt{\textbackslash##1}~already~ exists!~
Doing~nothing!
% oder ueberschreiben:
% \cs_set:cpx { ##1 } { \l_tmpa_tl }
}
{ \cs_new:cpx { ##1 } { \l_tmpa_tl } }
}
}
{ Lists~don't~match!~Aborting... }
}
\ExplSyntaxOff

\begin{document}

\newlist{A}{A|B|C}
\newlist{B}{-0.004|-0.005|0.006}
\newlist{C}{w|x|y|z}
\newlist{D}{1|2|3|4}

\assignlists{A}{C}

\assignlists{A}{B}
A: $\A$, B: $\B$, C: $\C$

\assignlists{C}{D}
w: \w, x: \x, y: \y, z: \z

\end{document}

Grüße

Goldnas
27-07-2012, 18:56
Ich bin unsicher, ob wir uns richtig verstehen.

Ich möchte praktisch 2 Variablen haben, die als "Container" sowohl variablennamen als auch die dazugehörigen Werte transportiert...

ich schicke also in die funktion die ich schreibe (x-beliebige)

meinefunktion{A|B|C}{1|2|3} rein



innerhalb dieser funktion kann ich dann mit dem zu verwendenden code

\A aufrufen und erhalte 1
\B aufrufen und erhalte 2
\C aufrufen und erhalte 3

ich habe also insgesamt in 2 variablen 3 variablen verpackt, wobei die anzahl variabel sein soll.

es bleiben IMMER 2 inputvariablen, da mit variablennamen und dazugehörigen wert alles ausreichend definiert ist.

darüberhinaus arbeite ich unter anderem mit pstricks, das da ebenfalls vorhanden ist... ich kann mich also nur noch sehr begrenzt bewegen, da auch keine writestreams mehr möglich zu sein scheinen.

mein script, dass ich verwende meldet jetzt schon im ersten kompiliervorgang fehler, obwohl das script keine fehler aufweist, im zweiten rutsch geht der compilevorgang problemlos......

ich gebe allerdings zu, dass schon exzessiv viel latex verwendet worden ist....

konkret geht es mir darum, dass ich eine funktion geschrieben habe, die mir durch input einer csvdatei ein diagramm erstellt und es automatisch skaliert und berechnet, so dass es schön dargestellt werden. Derzeit habe ich in einer funktion 3 verscheidene diagramme, Warscheinlichkeits PLots und Screenplots, die sich automatisiert mit FP package anpassen.....


ich hoffe, dass soweit klar ist, dass ich also diese funktion nur als hilfsfunktion brauche, um bestimmte varialbennamen eben an die Diagrammvariablen zu übergeben....

Aufgrund der limitierungen kann ich leider das script nicht ausführen....

lg Goldnas

cgnieder
27-07-2012, 19:37
Wenn ich Dich richtig verstanden habe, dann sollte eine leicht modifizierte Variante das gewünschte sein:


\documentclass{article}

\usepackage{expl3,xparse}
\ExplSyntaxOn

\cs_new:Npn \goldnas_assignlists:nn #1#2
{
\seq_set_split:Nno \l_tmpa_seq { | } { #1 }
\seq_set_split:Nno \l_tmpb_seq { | } { #2 }
\int_compare:nTF
{ \seq_count:N \l_tmpa_seq = \seq_count:N \l_tmpb_seq }
{
\seq_map_inline:Nn \l_tmpa_seq
{
\seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
\cs_if_exist:cTF { ##1 }
{
Sorry!~Command~\texttt{\textbackslash##1}~already~ exists!~
Doing~nothing!
% oder ueberschreiben:
% \cs_set:cpx { ##1 } { \l_tmpa_tl }
}
{ \cs_new:cpx { ##1 } { \l_tmpa_tl } }
}
}
{ Lists~don't~match!~Aborting... }
\seq_clear:N \l_tmpa_seq
\seq_clear:N \l_tmpb_seq
}
\cs_generate_variant:Nn \seq_set_split:Nnn { Nno }

\NewDocumentCommand\assignvalues{mm}
{ \goldnas_assignlists:nn { #1 } { #2 } }
\ExplSyntaxOff

\begin{document}

\assignvalues{A|B|C}{-0.004|-0.005|0.006}
A: $\A$, B: $\B$, C: $\C$

\def\varA{w|x|y|z}
\def\varB{1|2|3|4}
\assignvalues{\varA}{\varB}
w: \w, x: \x, y: \y, z: \z

\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=5326&stc=1&d=1343410464

Grüße

Goldnas
28-07-2012, 12:52
Wenn ich Dich richtig verstanden habe, dann sollte eine leicht modifizierte Variante das gewünschte sein:


\documentclass{article}

\usepackage{expl3,xparse}
\ExplSyntaxOn

\cs_new:Npn \goldnas_assignlists:nn #1#2
{
\seq_set_split:Nno \l_tmpa_seq { | } { #1 }
\seq_set_split:Nno \l_tmpb_seq { | } { #2 }
\int_compare:nTF
{ \seq_count:N \l_tmpa_seq = \seq_count:N \l_tmpb_seq }
{
\seq_map_inline:Nn \l_tmpa_seq
{
\seq_pop_left:NN \l_tmpb_seq \l_tmpa_tl
\cs_if_exist:cTF { ##1 }
{
Sorry!~Command~\texttt{\textbackslash##1}~already~ exists!~
Doing~nothing!
% oder ueberschreiben:
% \cs_set:cpx { ##1 } { \l_tmpa_tl }
}
{ \cs_new:cpx { ##1 } { \l_tmpa_tl } }
}
}
{ Lists~don't~match!~Aborting... }
\seq_clear:N \l_tmpa_seq
\seq_clear:N \l_tmpb_seq
}
\cs_generate_variant:Nn \seq_set_split:Nnn { Nno }

\NewDocumentCommand\assignvalues{mm}
{ \goldnas_assignlists:nn { #1 } { #2 } }
\ExplSyntaxOff

\begin{document}

\assignvalues{A|B|C}{-0.004|-0.005|0.006}
A: $\A$, B: $\B$, C: $\C$

\def\varA{w|x|y|z}
\def\varB{1|2|3|4}
\assignvalues{\varA}{\varB}
w: \w, x: \x, y: \y, z: \z

\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=5326&stc=1&d=1343410464

Grüße


Prinzipiell hast du richtig verstanden, das Problem ist, er tut trotzdem nicht. Er bricht ab mit


! Undefined control sequence.
l.1342 \msg_kernel_new:nnnn
{ xparse } { bad-arg-spec }
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

LG Goldnas

cgnieder
28-07-2012, 17:58
Dann ist wahrscheinlich Deine TeX-Distribution nicht aktuell. Wenn Du aktuelle Versionen von l3kernel (http://www.ctan.org/pkg/l3kernel) und l3packages (http://www.ctan.org/pkg/l3packages) installierst, sollte alles glatt gehen.

Hier als Alternative eine Variante, die ohne expl3 auskommt:


\documentclass{article}
\usepackage{etoolbox}

\makeatletter
\def\ifinstr#1#2{%
\def\@ifinstr##1#2##2\@nil{%
\ifstrempty{##2}{\@secondoftwo}{\@firstoftwo}}%
\@ifinstr#1\@@nil#2\@nil
}

\def\popleft#1#2{%
\edef\@tmpa{#1}%
\expandafter\@popleft\expandafter{\@tmpa}{#1}{#2}}
\def\@popleft#1#2#3{%
\ifinstr{#1}{|}
{\@@popleft{#2}{#3}\q@nil#1\q@stop}
{\@@popleft{#2}{#3}\q@nil#1|\q@stop}}
\def\@@popleft#1#2\q@nil#3|#4\q@stop{\edef#1{#4}\e def#2{#3}}

\newcommand*\assignvalues[2]{\@assignvalues{#1}{#2}}
\def\@assignvalues#1#2{%
\edef\@tmpb{#1}\edef\@tmpc{#2}%
\popleft\@tmpb\currentvalueA
\popleft\@tmpc\currentvalueB
\csedef{\currentvalueA}{\currentvalueB}%
\ifdefempty\@tmpb{}{\assignvalues\@tmpb\@tmpc}%
}
\makeatother

\begin{document}

\assignvalues{A|B|C}{-0.004|-0.005|0.006}
A: $\A$, B: $\B$, C: $\C$

\def\varA{w|x|y|z}
\def\varB{1|2|3|4}
\assignvalues{\varA}{\varB}
w: \w, x: \x, y: \y, z: \z

\end{document}

Grüße

Goldnas
29-07-2012, 16:15
Hallo Clemens,

funktioniert wunderbar, leider versteh ich den Code noch nicht so, wie ich möchte, denn ich hätte es jetzt noch erweitern wollen. (Du hast übrigens recht gehabt mit den Updates....)

Ich hab die zweite Variante gewählt und das ist die, von der ich jetzt spreche...

Beispielsweise das, was jetzt gemacht worden ist funktioniert perfekt. Kann man das erweitern, dass auch strings akzeptiert werden?


Beispiel 1:

\assignvalues{A|B|C}{1|2|3}

Ergibt \A \B \C jeweils die werte, wie schon die funktion tut.

Auf strings erweitert würde das so ausschaun....

\assignvalues{A|B|C|D|E}{1|2|3|foo|bar}

\D ergibt foo
\E ergibt bar

Leere strings sollen akzeptiert werden, damit ich dann innerhalb der Funktion abfragen kann, ob \D stringlength = 0 hat, je nachdem, obs null ist oder nicht kann ich damit sachen deaktiviern oder nicht,


erlaubt ist daher auch
\assignvalues{A|B|C|D|E}{1|2|3||}
oder
\assignvalues{A|B|C|D|E|F}{1|2|3||Messdaten/statistik/mfrout.dat}


jetzt sind D und E leer.

damit ich das machen kann müßte ich aber den code verstehen, kannst du mir das noch ein wenig kommentieren?

LG Peter

PS.: Da deine Funktion teil meiner Diagramme ist, die ich gern veröffentlichen würde, also die Makros, gebe ich deinen vollständigen Namen und die Quelle an, falls das ok für dich ist..

cgnieder
29-07-2012, 16:42
funktioniert wunderbar, leider versteh ich den Code noch nicht so, wie ich möchte, denn ich hätte es jetzt noch erweitern wollen. (Du hast übrigens recht gehabt mit den Updates....)

[...]

Beispielsweise das, was jetzt gemacht worden ist funktioniert perfekt. Kann man das erweitern, dass auch strings akzeptiert werden?

Hast Du's ausprobiert? Die Beispiele, die Du gebracht hast funktionieren nämlich mit dem jetzigen Code. Hier ist er nochmal, mit Kommentaren versehen, die Dir hoffentlich weiterhelfen.


\documentclass{article}
\usepackage{etoolbox}

\makeatletter
% \ifinstr{#1}{#2}{<true>}{<false>}
% testet, ob #2 in #1 enthalten ist, verwendet etoolbox's \ifstrempty
\def\ifinstr#1#2{%
\def\@ifinstr##1#2##2\@nil{%
\ifstrempty{##2}{\@secondoftwo}{\@firstoftwo}}%
\@ifinstr#1\@@nil#2\@nil
}

% den linken Eintrag einer mit | getrennten Liste erhalten:
% Liste ist in #1 gespeichert, Eintrag wird in #2 gespeichert
\def\popleft#1#2{%
\edef\@tmpa{#1}%
% den Umweg über \edef machen, damit später an \assignvalues
% auch macros gefüttert werden können. Caveat: dürfen nur expandierbares
% Material enthalten;
\expandafter\@popleft\expandafter{\@tmpa}{#1}{#2}}

% Zwischenstop: der letzte Eintrag ist in einer Liste ohne |:
\def\@popleft#1#2#3{%
\ifinstr{#1}{|}% wenn in eins ein | enthalten ist
{\@@popleft{#2}{#3}\q@nil#1\q@stop}
{\@@popleft{#2}{#3}\q@nil#1|\q@stop}}

% das eigentliche wegpoppen:
% #1: Name der ursprünglichen Liste, arg #1 von \popleft
% #2: Name des Macros in das der das gepoppte Element gespeichert werden soll
% #3: das linke Element der Liste
% #4: der Rest der Liste
% #3|#4 werden mit arg #1 bzw #1| gefüttert in \@popleft
\def\@@popleft#1#2\q@nil#3|#4\q@stop{\edef#1{#4}\e def#2{#3}}

% User-Befehl
\newcommand*\assignvalues[2]{\@assignvalues{#1}{#2}}

% interner Befehl:
\def\@assignvalues#1#2{%
% Beide Argumente in temporären Macros speichern:
\edef\@tmpb{#1}\edef\@tmpc{#2}%
% aus beiden Listen jeweils den linken Eintrag entfernen und speichern:
\popleft\@tmpb\currentvalueA
\popleft\@tmpc\currentvalueB
% den Eintrag der ersten Liste in ein Macro umwandeln und den Wert der zweiten
% Liste zuweisen, verwendet etoolbox's \csedef
\csedef{\currentvalueA}{\currentvalueB}%
% wenn die Liste jetzt leer ist, aufhören, ansonsten das ganze wiederholen,
% verwendet etoolbox's \ifdefempty:
\ifdefempty\@tmpb{}{\assignvalues\@tmpb\@tmpc}%
}
\makeatother

\begin{document}

\assignvalues{A|B|C|D|E}{1|2|3|foo|bar}
A: \A, B: \B, C: \C, D: \D, E: \E

\assignvalues{A|B|C|D|E}{1|2|3||}
A: \A, B: \B, C: \C, D: \D, E: \E

\assignvalues{A|B|C|D|E|F}{1|2|3||Messdaten/statistik/mfrout.dat}
A: \A, B: \B, C: \C, D: \D, E: \E, F: \F

\def\varA{w|x|y|z}
\def\varB{1|2|3|4}
\assignvalues{\varA}{\varB}
w: \w, x: \x, y: \y, z: \z

\end{document}


Da deine Funktion teil meiner Diagramme ist, die ich gern veröffentlichen würde, also die Makros, gebe ich deinen vollständigen Namen und die Quelle an, falls das ok für dich ist..

Wie Du möchtest. Wenn Dir wohler damit ist, würde ich den Code auch unter CC0 (http://wiki.creativecommons.org/CC0) (d.h. public domain) stellen.


Grüße

cgnieder
29-07-2012, 17:00
Leere strings sollen akzeptiert werden, damit ich dann innerhalb der Funktion abfragen kann, ob \D stringlength = 0 hat, je nachdem, obs null ist oder nicht kann ich damit sachen deaktiviern oder nicht

Da der Code sowieso schon etoolbox (http://www.ctan.org/pkg/etoolbox) lädt: das stellt übrigens auch Makros zum Testen von Strings bereit, etwa \ifblank.

Gruß

Goldnas
29-07-2012, 18:05
Hast Du's ausprobiert? Die Beispiele, die Du gebracht hast funktionieren nämlich mit dem jetzigen Code. Hier ist er nochmal, mit Kommentaren versehen, die Dir hoffentlich weiterhelfen.


Ich bin ein Depp, ich hab die Variable nicht aufgerufen...;( DU hast absolut recht....
danke für die Kommentare...





Wie Du möchtest. Wenn Dir wohler damit ist, würde ich den Code auch unter CC0 (http://wiki.creativecommons.org/CC0) (d.h. public domain) stellen.

Grüße


Das wäre schön, ja danke.

LG Goldnas

cgnieder
29-07-2012, 19:24
Wenn Dir wohler damit ist, würde ich den Code auch unter CC0 (d.h. public domain) stellen.

Das wäre schön, ja danke.

Dann sei das hiermit geschehen.

Goldnas
02-08-2012, 22:04
Dann sei das hiermit geschehen.

Magst du dann mein fertiges Script für Diagramme haben?

Es erfordert eben halt fp, datatool und etoolbox.

Derzeit umfasst das Script:

Die automatische Skalierung von Daten, welche als CSV File eingelesen wird. Einige Parameter müssen angegeben werden.


Anazhl der Gitternetzlinien horizontal
Anzahl der Gitteretzlinien vertikal
Beschriftungen
X-Wertebereich
Y-Wertebereich
Diagrammart
Ob die Regressionsgerade gerechnet werden soll oder nicht
Skalierungsfaktor optional.
Das Script ist unvollständig
Es wird eine kleine Doku dazu geben müssen
Ersatzbild
Leerdummy, damit nicht gerechnet wird, sondern nur der Platz "verbaut" fürs spätere setzen, welches dann deutlich länger dauert....


Auf Basis dieser Daten wird das Diagramm automatisiert erstellt. Ein lästiges Umrechnen fällt flach.

Aufgerufen wird das Zeug beispielsweise so....



\trfz{5}{Messdaten/statistik/wassergehaltaL.dat}{Messdaten/statistik/wassergehaltaout.dat}{Wassergehalt Rohstoff A}{nvlines|nhlines|lab|mbstartx|mbstepx|hilfsgitte rlinien|altscale|yend|xend|yistart|sflag|rgg|bcapt ion|bottomdesc|leftdesc}{8|14|fig:WGnvA|75|25|15|1 000|4.9|9|0|1|1|Wassergehalt Rohstoff A|Wassergehalt Rohstoff A|Prozent}{}{}{Bilder/minitab/WGnvA}


Das Resultat sieht dann so aus....

Ein Problem besteht in den Berechnungen noch, da ich aber derzeit nicht weiß, wie ich das manuell hinbekomme, muß ich bei statischen Daten 2 Inputfiles verwenden, leider...

:(

Die im Excel formulierte Funktion NORMINV(N12;MEAN;SD) schaffe ich nicht....
Ich müßte zwar ebenfalls eine Liste an diese Funktion übergeben um die entsprechenden Werte zu ermitteln.... aber ich hab nicht mal ansatzweise einen Schimmer wie ich das bewerkstelligen soll....



LG Goldnas

Goldnas
05-09-2012, 13:10
Clemens? Dein Befehl ist super. Leider kommt er mit Text nicht zurecht, wenn ich folgendes mache....


...{bcaption}{Äußere}


und später dann

in einem Bild....


\end{pspicture}
\caption[Warscheinlichkeitsverteilung \protect\bcaption]{\space\protect\bcaption\space (AD)}
\label{\lab}


Er meldet dann immer....

im lof file....

\contentsline {figure}{\numberline {1.6}{\ignorespaces Wahrscheinlichkeitsplot Äu\T 1\ss ere Restfeuchte Rohstoff A}}{5}{figure.caption.9}

er schreibt immer \T 1\ss ....:((((

Hast du da eine Idee?

cgnieder
05-09-2012, 13:44
Kannst Du ein Minimalbeispiel machen, das den Fehler liefert?

Grüße

Goldnas
05-09-2012, 15:08
Moment. Sofort...


Frage wurde auch auf http://tex.stackexchange.com/questions/70246/special-command-and-caption
gestellt.

MWE wird gerade gebaut.....



\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[ansinew]{inputenc}
\usepackage{lmodern}
\usepackage{textcomp} % Euro-Zeichen etc...
\usepackage{etoolbox}
\usepackage{graphicx}
\usepackage{caption}[2008/08/24]
\usepackage{pstricks}
\usepackage{pst-all}
\usepackage{pstricks-add}

\makeatletter
\def\ifinstr#1#2{%
\def\@ifinstr##1#2##2\@nil{%
\ifstrempty{##2}{\@secondoftwo}{\@firstoftwo}}%
\@ifinstr#1\@@nil#2\@nil
}

\def\popleft#1#2{%
\edef\@tmpa{#1}%
\expandafter\@popleft\expandafter{\@tmpa}{#1}{#2}}
\def\@popleft#1#2#3{%
\ifinstr{#1}{|}
{\@@popleft{#2}{#3}\q@nil#1\q@stop}
{\@@popleft{#2}{#3}\q@nil#1|\q@stop}}
\def\@@popleft#1#2\q@nil#3|#4\q@stop{\edef#1{#4}\e def#2{#3}}

\DeclareRobustCommand*\assignvalues[2]{\@assignvalues{#1}{#2}}
\def\@assignvalues#1#2{%
\edef\@tmpb{#1}\edef\@tmpc{#2}%
\popleft\@tmpb\currentvalueA
\popleft\@tmpc\currentvalueB
\csedef{\currentvalueA}{\currentvalueB}%
\ifdefempty\@tmpb{}{\assignvalues\@tmpb\@tmpc}%
}
\makeatother


\newcommand{\blankimageX}{
\begin{figure}[!ht]
\begin{center}
\psset{xunit=\scalex cm,yunit=\scaley cm, runit=\scaler cm}
\psCancel{\begin{pspicture}(\xstart,\ystart)(\xend ,\yend)
% Achsen
% X-Achse
\psline(\xstart,\yistart)(\xend,\yistart)
% Y-Achse
\psline(\xstart,\yistart)(\xstart,\yend)
\psline(\xend,\yistart)(\xend,\yend)
\psline(\xstart,\yend)(\xend,\yend)
\end{pspicture}}
\caption[Wahrscheinlichkeitsplot \bcaption]{Wahrscheinlichkeitsplot \bcaption nach Anderson-Darling}
\label{\lab}
\end{center}
\end{figure}
}

\begin{document}
\tableofcontents
\listoffigures

\chapter{Chapter A}
\assignvalues{scalex|scaley|scaler|xstart|xend|yst art|yend|yistart}{1|1|1|0|8|0|5|-1}
\assignvalues{bcaption|lab}{Äußere Restfeuchte|fig:picdesc}

\bcaption

\section{Section A}
\chapter{Chapter B}

\blankimageX

\section{Section B}
\end{document}

Goldnas
05-09-2012, 15:49
Hallo Clemens, schau auf die andere Quelle, da ist schon ein Hint gekommen, damit du nicht unnötig suchen mußt....

Lösung gefunden, habs noch nicht getestet....
mach ich gleich....

Die Lösung dort geht. ;)

Hoffe ich bin dir jetzt nicht auf den Schlips getreten. Falls ja, dann Entschuldigung. :(

LG Goldnas

cgnieder
05-09-2012, 17:24
Kein Problem! Und @egreg's Analyse ist natürlich korrekt. Man neigt gerne dazu zu vergessen, dass Umlaute keine Buchstaben sondern aktive Charaktere (sprich: Makros) sind. Das hat hier das Problem verursacht.

Grüße

Goldnas
05-09-2012, 20:14
Kein Problem! Und @egreg's Analyse ist natürlich korrekt. Man neigt gerne dazu zu vergessen, dass Umlaute keine Buchstaben sondern aktive Charaktere (sprich: Makros) sind. Das hat hier das Problem verursacht.

Grüße

Würd dir bei Gelegenheit eine Kopie meiner Arbeit zukommen lassen. Da wirst du sehen, wie exzessiv ich deinen Code nutzen hab können. (Falls du magst)
Und die in dieser Arbeit vorkommenden Bilder sind bis auf wenige Ausnahmen alle mit PSTricks gemacht worden.

LG Goldnas