Auch hier gefragt.


Hallo! Wie erreiche ich, dass, mit Aunahme der ersten (0.1234), die Führenden Nullen "0." (nicht jedoch die Füllnullen "0.5000") in der ganzen Tabelle ausgeblendet werden?

Mit ignore chars={0.}, geht es scheints nicht. Danke!

alt text

Open in Online-Editor
%\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}

\pgfplotstableset{
fixed zerofill, precision=4,
%ignore chars={.0}, 
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}

\end{document}

gefragt 19 Jan, 21:12

cis's gravatar image

cis
5.4k860168
Akzeptiert: 68%

bearbeitet 20 Jan, 11:22

saputello's gravatar image

saputello
18.4k22352


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.

Open in Online-Editor
%\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

Permanenter link

beantwortet 20 Jan, 16:21

Henri's gravatar image

Henri
10.0k31730

bearbeitet 21 Jan, 05:11

saputello's gravatar image

saputello
18.4k22352

Ach Du meine Güte, das sah gestern noch halbwegs harmlos aus :()

BTW: Es ist üblich, die Führenden Nullen wegzulassen und nur die sogen. Signifikanten Stellen anzugeben; zumal in dieser Tabelle überall Null-Komma vorne drann steht. Die allererste Null soll bei mir bleiben; das dient als Erläuterung.

(21 Jan, 07:19) cis

In meiner Tabelle werden übrigens alle Nullen beseitigt, auch die erste.

(21 Jan, 07:25) cis

@cis: Das Beispiel von Henri gibt definitiv das aus, was er auch in der Abbildung gezeigt hat. Wo das Weglassen der Nullen üblich ist, würde mich durchaus auch interessieren. Ich habe das noch nie irgendwo gesehen. Ich würde fast darauf tippen, dass das Weglassen der Faulheit des Autors oder des Setzers geschuldet ist. Das wäre dann so ähnlich wie mit Abkürzungen, die man aus Faulheit gerne verwendet, die aber dem guten Schreibstil widersprechen.

(21 Jan, 07:43) saputello

Siehe z.B. hier: http://www.informatik.uni-bremen.de/~shahn/mathematik/stochastik/binomial_tabelle.PDF

Ich kann auch noch zwei, und wenn ich länger suche, sicher mehr, Bücher abfotographieren. Da alle Werte mit Null-Komma beginnen, lässt man diese Angabe oft weg.

(21 Jan, 10:28) cis

Was muss ich ändern, wenn deiese Regel ab der 3 Spalte angewendet werden soll?

(21 Jan, 18:39) cis

Wenn man z.B. \pgfplotstabletypeset[columns = {0,0,1,2}]{kTest2.txt} ausgibt, tut es nimmer.

(21 Jan, 21:45) cis

Ok, ich muss bei mir \ifnum\pgfplotstablecol>1 ändern.

(22 Jan, 11:42) cis
Ergebnis 5 von 7 Alle anzeigen
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:

×185
×11

Frage gestellt: 19 Jan, 21:12

Frage wurde angeschaut: 1,004 Mal

Zuletzt aktualisiert: 22 Jan, 11:42