Anzeige:
Ergebnis 1 bis 8 von 8

Thema: \addto\extrasngerman{\pgfplotsset{/pgf/number format/use comma}}

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.04.2009
    Beiträge
    223

    \addto\extrasngerman{\pgfplotsset{/pgf/number format/use comma}}

    Ich habe einen kleinen Fehler festgestellt, dessen Ursache zu finden mich reichlich Nerven gekostet hat.

    Folgendes Minimalbeispiel

    Code:
    \documentclass{article} 
    
    \usepackage[ngerman]{babel}
    
    \usepackage[latin9]{inputenc}
    
    \usepackage[T1]{fontenc}
    
    \usepackage{tikz}
    
    \usepackage{pgfplots}
    \pgfplotsset{compat=newest}
    
    \pgfplotsset{/pgf/number format/use comma}
    \pgfplotsset{/pgf/number format/.cd,1000 sep={\,}}
    
    \begin{document}
    
    \begin{figure}
    	\centering
    		\begin{tikzpicture}
    			\begin{axis}
    				\addplot+[domain=1:1000]{cos(deg(x*2*pi/1000))};
    			\end{axis}
    		\end{tikzpicture}
    \end{figure}
    
    \end{document}
    funktioniert ganz perfekt.

    Ändert man allerdings die Zeile

    Code:
    \pgfplotsset{/pgf/number format/use comma}
    in

    Code:
    \addto\extrasngerman{\pgfplotsset{/pgf/number format/use comma}}
    so bekommt man zwar immernoch ein Komma als Dezimaltrenner, allerdings wieder einen Punkt statt ein halbes Leerzeichen als Tausendertrennzeichen.

    Woran liegt das?

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    "use comma" ist ein Stil der mehrere Dinge tut, u.a. setzt es auch den "1000 sep". Wenn du "use comma" innerhalb von \extrasngerman setzt, wird es zu Beginn des Dokuments (und an allen anderen Stellen wo du zu ngerman wechselst) ausgeführt und überschreibt damit deine "1000 sep" Einstellung.

    Du musst also entweder statt "use comma" "set decimal separator" benutzen, oder "1000 sep" auch in \extrasngerman hineinnehmen.

    Ich hoffe aber, dass du nicht zweierlei Einstellungen für Zahlen in einem Dokument benutzt. Das dürfte Leser sehr verwirren.

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.04.2009
    Beiträge
    223
    Danke für die Erklärung. Das macht mir einiges klarer.

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.04.2009
    Beiträge
    223
    Ich habe es jetzt mal ausprobiert und die Zeile

    Code:
    \addto\extrasngerman{\pgfplotsset{/pgf/number format/use comma}}
    durch

    Code:
    \addto\extrasngerman{\pgfplotsset{/pgf/number format/.cd,dec sep={,}}}
    ersetzt. Leider funktioniert es trotzdem nicht. Statt eines Kommas erscheint gar kein Dezimaltrenner.

    Ich habe mich dann mal ein bisschen durch die pgfmathfloat.code.tex gelesen und folgendes ausprobiert:

    Die Variante
    Code:
    \addto\extrasngerman{\pgfplotsset{/pgf/number format/set decimal separator={{{,}}}}}
    funktioniert. Warum eigentlich? Das man zusätzlich zwei geschweifte Klammern braucht, um ein Komma zu erzeugen, scheint nirgendwo dokumentiert zu sein.

    Die Variante
    Code:
    \addto\extrasngerman{\pgfplotsset{/pgf/number format/dec sep={{{,}}}}}
    funktioniert dagegen nicht. Warum eigentlich nicht? Laut dem pgfplotstable-manual sollte 'dec sep' und 'set decimal separator' eigentlich genau das Gleiche machen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.07.2010
    Beiträge
    96
    Hi Magger,

    ich denke, ich kann Dir was an Antworten - und sogar Fehlerbehebungen - beisteuern:

    1. Das
    Code:
    dec sep={,}
    nicht funktioniert ist tatsaechlich ein bug in TikZ. Ich habe das soeben behoben und in die entwicklerversion von TikZ eingespielt. Danke fuer den Bericht - und sorry fuer die nerverei :-(

    Das 'dec sep' ist nichts anderes als
    Code:
    set decimal separator={#1}
    . dummerweise fehlten die Klammern um das Argument ... und da Kommata eine spezielle bedeutung fuer key-value prozessierung haben, ging dieses Argument unter :-/

    Das ist jetzt behoben.

    2. Warum drei Klammerpaare nur fuer ein Komma? Nun:

    Das erste Klammerpaar brauchst Du, damit das Komma nicht von dem key-value-prozessor interpretiert wird.

    Das reicht auch VOELLIG aus.

    Aber: Du kannst ja mal
    Code:
    \pgfplotsset{/pgf/number format/set decimal separator={,}}
    
    \pgfmathprintnumber{1.123}
    
    $1,12$
    
    $1{,}12$
    bei Dir ausprobieren. Das Komma hat irgendwelche speziellen Spacing mechanismen in TeX - im Math mode wird danach leerer Platz eingefuegt. Beim Zahlformatieren will man das nicht, darum das naechste paar Klammern. Das dritte paar Klammern ist nun leider auch ein Artefakt des key-value prozessors: der entfernt ein paar waehrend er untersucht, welchen Typ der key hat. Das ist in der Tat doof, nur leider nicht leicht zu umgehen.

    Mit liebem Gruss

    Christian
    Geändert von Feuersaenger (11-09-2012 um 21:13 Uhr) Grund: formatierung

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.04.2009
    Beiträge
    223

    Danke

    Hallo Christian,

    vielen Dank für deine Bemühungen und Fehlerbehebungen. Ich warte dann auf das nächste Update.

    Noch ein Kommentar, der nur noch indirekt zum eigentlichen Thema gehört:

    Ich würde es begrüßen, den Stil "use comma" und "use period" so abzuändern, dass stets ein halbes oder gar kein Leerzeichen als Tausendertrennzeichen verwendet wird. In jedem Fall sollte kein Komma und kein Punkt als Tausendertrennzeichen verwendet werden.

    Das entspricht dann den Vorschlägen und Regelungen des internationalen Maß- und Gewichtsbüros (BIPM).

    Siehe dazu:

    http://de.wikipedia.org/wiki/Interna...ertrennzeichen

    oder direkt

    http://www.bipm.org/utils/common/pdf/si_brochure_8.pdf (Abschnitt 5.3.4 auf Seite 139)

    Viele Grüße, Mathias

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.07.2010
    Beiträge
    96
    Hallo Mathias,

    danke fuer den Hinweis... klingt sinnvoll. Leider ist die jetzige Einstellung numal in der "grossen weiten Welt" gelandet. Ich fuerchte, da laesst sich ohne einen Aufschrei nichts mehr dran machen.

    Ich koennte hoechstens einen *weiteren* Style hinzufuegen, der das tut. Das machts nur nicht uebersichtlicher...

    Mit liebem Gruss

    Christian

  8. #8
    Registrierter Benutzer
    Registriert seit
    24.04.2009
    Beiträge
    223
    Ich würde es bei der nächsten "Major Revision" ändern, die Änderung mit einer entsprechenden Begründung dokumentieren und den möglichen Aufschrei riskieren.

    Lieber ein Ende mit Schrecken, als ein Schrecken ohne Ende.

    Ist aber nur meine persönliche Meinung.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •