Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 7
Leerzeichen

21 Jan '16, 11:11

saputello's gravatar image

saputello
11.1k174365

Es gibt den Key `skip 0.` für `\pgfmathprintnumber`. Dieser mach fast genau das, was gewünscht ist, allerdings für alle Zellen. Der Key speichert seinen Wahrheitswert in `\ifpgfmathprintnumberskipzeroperiod`. Diesen setzt man einfach nach der ersten Zelle auf `true`. Damit die nächste Tabelle nicht beeinflusst wird, sollte er danach auf `false` zurückgesetzt werden. Um `0.`zu ersetzen bedarf es etwas mehr Arbeit, da man die Funktionsweise von `\pgfmathprintnumber`anpassen `\pgfmathprintnumber` anpassen muss. Dazu habe ich `\ifpgfmathprintnumberskipperiodandaddphantom`eingeführt, `\ifpgfmathprintnumberskipperiodandaddphantom` eingeführt, was statt dem Dezimaltrenner `\phantom{0.}`ausgibt. *N.B.:* Um ehrlich zu sein sehe ich den Absicht dahinter nicht. Für mich macht die Notation keinen Sinn und verwirrt zudem. Warum ist der erste Wert 0.1234 und der zweite 5500? Ich bin mir absolut sicher, dass die Mehrzahl der Leser nicht kapiert, dass die 5500 *nur* die Nachkommastellen sein sollen. %\documentclass[paper=a5]{scrartcl} \documentclass[varwidth, border=2pt]{standalone} \usepackage{pgfplotstable} \usepackage{filecontents} \begin{document} \begin{filecontents}{kTest2.txt} 0 0.1234 0.1000 1 0.5500 0.532 2 0.0789 0.75 \end{filecontents} \makeatletter \newif\ifpgfmathprintnumberskipzeroperiodandaddphantom \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1.#2\pgfmathfloat@EOI{% \ifpgfmathprintnumberskipzeroperiodandaddphantom \pgfmathprintnumberskipzeroperiodtrue \fi \ifpgfmathprintnumberskipzeroperiod \def\pgfmathfloat@loc@TMPb{#1}% \ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb \else \def\pgfmathfloat@loc@TMPc{-0}% \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb \def\pgfmathresult{-}% \else \def\pgfmathfloat@loc@TMPc{+0}% \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb \def\pgfmathresult{+}% \else \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI \fi \fi \fi \else \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI \fi \ifpgfmathprintnumber@thousand@sep@in@fractional \let\pgfmathresultfractional\pgfutil@empty% \pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@ \else \def\pgfmathresultfractional{#2}% \fi \begingroup \toks0=\expandafter{\pgfmathresult}% \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}% \ifpgfmathprintnumberskipzeroperiodandaddphantom \toks2=\expandafter{\expandafter\phantom\expandafter{\expandafter0\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}} \else \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}% \fi \toks3=\expandafter{\pgfmathresultfractional}% \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }% \endgroup \let\pgfmathresult=\pgfmathfloat@glob@TMP }% \makeatother \pgfplotstableset{ skip 0. for all but first/.style = { postproc cell content/.code={ \ifnum\pgfplotstablecol>0 \global\pgfmathprintnumberskipzeroperiodandaddphantomtrue \fi } }, } \pgfplotstableset{ fixed zerofill, precision=4, skip 0. for all but first, columns/0/.style = {column name = k, precision=0}, columns/1/.style = {column name = p}, columns/2/.style = {column name = q}, }%% \pgfplotstabletypeset[columns = {0,1,2}]{kTest2.txt} %\pgfmathprintnumberskipzeroperiodandaddphantomfalse % reenable decial separator \end{document} > ![alt text][1] [1]: http://texwelt.de/wissen/upfiles/test_48.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 6

21 Jan '16, 10:36

Henri's gravatar image

Henri
15.7k133943

Es gibt den Key `skip 0.` für `\pgfmathprintnumber`. Dieser mach fast genau das, was gewünscht ist, allerdings für alle Zellen. Der Key speichert seinen Wahrheitswert in `\ifpgfmathprintnumberskipzeroperiod`. Diesen setzt man einfach nach der ersten Zelle auf `true`. Damit die nächste Tabelle nicht beeinflusst wird, sollte er danach auf `false` zurückgesetzt werden. Um `0.`zu ersetzen bedarf es etwas mehr Arbeit, da man die Funktionsweise von `\pgfmathprintnumber`anpassen muss. Dazu habe ich `\ifpgfmathprintnumberskipperiodandaddphantom`eingeführt, was statt dem Dezimaltrenner `\phantom{0.}`ausgibt. *N.B.:* Um ehrlich zu sein sehe ich den Absicht dahinter nicht. Für mich macht die Notation keinen Sinn und verwirrt zudem. Warum ist der erste Wert 0.1234 und der zweite 5500? Ich bin mir absolut sicher, dass die Mehrzahl der Leser nicht kapiert, dass die 5500 *nur* die Nachkommastellen sein sollen. %\documentclass[paper=a5]{scrartcl} \documentclass[varwidth, border=2pt]{standalone} \usepackage{pgfplotstable} \usepackage{filecontents} \begin{document} \begin{filecontents}{kTest2.txt} 0 0.1234 0.1000 1 0.5500 0.532 2 0.0789 0.75 \end{filecontents} \makeatletter \newif\ifpgfmathprintnumberskipperiodandaddphantom \newif\ifpgfmathprintnumberskipzeroperiodandaddphantom \def\pgfmathprintnumber@fixed@styleDEFAULT@impl@period#1.#2\pgfmathfloat@EOI{% \ifpgfmathprintnumberskipzeroperiodandaddphantom \pgfmathprintnumberskipzeroperiodtrue \fi \ifpgfmathprintnumberskipzeroperiod \def\pgfmathfloat@loc@TMPb{#1}% \ifx\pgfmathfloatparsenumber@tok@ZERO\pgfmathfloat@loc@TMPb \else \def\pgfmathfloat@loc@TMPc{-0}% \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb \def\pgfmathresult{-}% \else \def\pgfmathfloat@loc@TMPc{+0}% \ifx\pgfmathfloat@loc@TMPc\pgfmathfloat@loc@TMPb \def\pgfmathresult{+}% \else \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI \fi \fi \fi \else \pgfmathprintnumber@fixed@styleDEFAULT@impl@noperiod#1\pgfmathfloat@EOI\pgfmathfloat@EOI\pgfmathfloat@EOI \fi \ifpgfmathprintnumber@thousand@sep@in@fractional \let\pgfmathresultfractional\pgfutil@empty% \pgfmathprintnumber@thousand@sep@in@fractional#2MMMM\@@ \else \def\pgfmathresultfractional{#2}% \fi \begingroup \toks0=\expandafter{\pgfmathresult}% \toks1=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP@MARK}% \ifpgfmathprintnumberskipperiodandaddphantom \toks2={\phantom{0.}} \ifpgfmathprintnumberskipzeroperiodandaddphantom \toks2=\expandafter{\expandafter\phantom\expandafter{\expandafter0\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}} \else \toks2=\expandafter{\pgfmathprintnumber@fixed@styleDEFAULT@DEC@SEP}% \fi \toks3=\expandafter{\pgfmathresultfractional}% \xdef\pgfmathfloat@glob@TMP{\the\toks0 \the\toks1 \the\toks2 \the\toks3 }% \endgroup \let\pgfmathresult=\pgfmathfloat@glob@TMP }% \makeatother \pgfplotstableset{ skip 0. for all but first/.style = { postproc cell content/.code={ \ifnum\pgfplotstablecol>0 \global\pgfmathprintnumberskipzeroperiodtrue \global\pgfmathprintnumberskipperiodandaddphantomtrue \global\pgfmathprintnumberskipzeroperiodandaddphantomtrue \fi } }, } \pgfplotstableset{ fixed zerofill, precision=4, skip 0. for all but first, columns/0/.style = {column name = k, precision=0}, columns/1/.style = {column name = p}, columns/2/.style = {column name = q}, }%% \pgfplotstabletypeset[columns = {0,1,2}]{kTest2.txt} %\pgfmathprintnumberskipzeroperiodfalse % <- optional: skip 0.=false %\pgfmathprintnumberskipperiodandaddphantomfalse %\pgfmathprintnumberskipzeroperiodandaddphantomfalse % reenable decial separator \end{document} > ![alt text][1] [1]: https://preview.overleaf.com/public/dkvnrskffrhz/images/b474a398b074e921eb162a2966c3e7cfa0d3c8ec.jpeghttp://texwelt.de/wissen/upfiles/test_48.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 5

21 Jan '16, 10:32

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

21 Jan '16, 10:32

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

21 Jan '16, 10:31

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

21 Jan '16, 10:29

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

20 Jan '16, 22:21

Henri's gravatar image

Henri
15.7k133943