Ich würde gerne für Tabellen Öffne in Overleaf
\newcommand\TabelleII{ \pgfplotstableread{ p q 4 5 6 7 }\temp \pgfplotstabletypeset[MyStyle]{\temp} } Mir ist klar, dass man ein Problem beheben könnte, wenn die Tabellen nicht alle mit Das ist 99,9%ig wieder etwas mit Öffne in Overleaf
\documentclass[border=5mm]{standalone} \usepackage{pgfplotstable} % geht: \pgfplotstableread{ a b o 1 2 3 }\temp % \newcommand\TabelleI{ \pgfplotstabletypeset[MyStyle]{\temp} } % geht nicht: \newcommand\TabelleII{ \pgfplotstableread{ p q 4 5 6 7 }\temp \pgfplotstabletypeset[MyStyle]{\temp} } \pgfplotstableset{% Style, der obige Tabellen angewendet werden soll MyStyle/.style={string type} } \begin{document} geht: \TabelleI geht nicht: %\TabelleII \end{document} gefragt 07 Okt '18, 19:06 cis
Ergebnis 5 von 9
show 4 more comments
|
Das Folgende definiert dir ein Macro, dass deine Tabellen in der von dir gewünschten Syntax liest und ein Macro definiert, um diese auszugeben. Allerdings benötigt auch das Macro zum Tabellendefinieren catcode Änderungen und kann nicht im Argument anderer Macros verwendet werden! Ob dir das Ganze hilft, weiß ich nicht. Die Lösung zum Definieren der Macros ist ähnlich wie in https://texwelt.de/wissen/fragen/23269/pgfplotstable-eine-anzahl-newcommands-automatisch-erstellen, allerdings verwende ich hier Öffne in Overleaf
\documentclass[border=5mm]{standalone} \usepackage{pgfplotstable} \usepackage{xparse} \ExplSyntaxOn \cs_new_protected:Npx \cis_replace_verb_newline:Nn #1 #2 { \tl_replace_all:Nnn #1 { \char_generate:nn { 13 } { 12 } } { #2 } } \cs_new_protected:Npx \cis_replace_verb_newline_newline:Nn #1 #2 { \tl_replace_all:Nnn #1 { \char_generate:nn { 13 } { 12 } \char_generate:nn { 13 } { 12 } } { #2 } } \cs_new_protected:Npn \cis_process_verb_newline:nnn #1 #2 #3 { \tl_set:Nn \ProcessedArgument { #3 } \cis_replace_verb_newline_newline:Nn \ProcessedArgument { #2 } \cis_replace_verb_newline:Nn \ProcessedArgument { #1 } } \cs_new_protected:Npn \cis_def_tabelle_inner:Nn #1 #2 { \scantokens{\pgfplotstableread[row~sep=\\]{#2}}#1 } \cs_generate_variant:Nn \cis_def_tabelle_inner:Nn { cn } \int_new:N \g_cis_tabellen_int \NewDocumentCommand \DefTabelle { m >{ \cis_process_verb_newline:nnn { \\ } { \\\\ } } +v } { \int_gincr:N \g_cis_tabellen_int \cis_def_tabelle_inner:cn { CisTab \int_use:N \g_cis_tabellen_int } { #2 } \cs_set:Npx #1 { \exp_not:N \pgfplotstabletypeset [ MyStyle ] { \exp_after:wN \exp_not:N \cs:w CisTab \int_use:N \g_cis_tabellen_int \cs_end: } } } \ExplSyntaxOff \pgfplotstableset{MyStyle/.style={string type}} \DefTabelle \TabelleI { p q 4 5 6 7 } \begin{document} \TabelleI \end{document} beantwortet 08 Okt '18, 20:33 Skillmon Ui... Woher weißt denn Du das alles?
(09 Okt '18, 04:50)
cis
1
@cis hauptsächlich durch meine Tätigkeiten, in denen ich Nutzlospakete für LaTeX schreibe, und durch meine bevorzugte Variante des Prokrastinieren: Fragen hier und auf TeX.SX beantworten. Du kannst das obige Macro übrigens auch nicht in
(09 Okt '18, 11:27)
Skillmon
|
Bei mir geht
\TabelleII
wenn ich auf die Warnung in der.log
-Datei höre und es mit\pgfplotstableread[row sep=\\]{ p q\\ 4 5\\ 6 7\\ }\temp
probiere. Ich kann Dir aber nicht sagen, wieso.Aha, Erklärungen dazu auf Seite 7 der PgfplotsTable-Dokumentation bei der
row sep
.Ah, verdammt! Kommas, &'s und
\\
's wollte ich auch vermeiden.Habe hier https://tex.stackexchange.com/questions/226238/pgfplotstableread-dynamically-create-loaded-table-macro-from-pgfplotsinvokefor etwas in die Richtung gefunden... denke, dass es so geht. Aber das Beispiel dort ist gleich wieder ultra kompliziert.
Ich denke nicht, dass Dir percusse's Antwort hier wriklich hilft. In seiner Anwort wird der Inhalt ja aus einer Datei gelesen. Wenn Du hier den Inhalt aus einer Datei liest, brauchst Du m.E. den ganzen Zauber nicht.
Ja, ich glaube es gibt einen bugigen Hintergrund zu Inline-Tables und Datafile-Tables - als Anhaltspunkt:
https://sourceforge.net/p/pgfplots/bugs/193/
im hierigen Thread https://texwelt.de/wissen/fragen/22945/pgfplots-patch-pgfplotstable-datentabellen-aus-dem-code-auslagern
(ich wollte dazu mal etwas eröffnen)
Schade... es wäre gut, wenn es mit Inline-Tables ginge.
@Murmeltier Dich interessieren ja immer auch die Hintergründe; dazu: ich möchte ein Applet für Lineare Gleichungssysteme erstellen, dass im Hinblick auf die Umformungsschitte, wie sie bei LGSen üblich sind, mit einer sehr mageren Notation aufwartet .
Nun sollen natürlich die erweiterten Koeffizientenmatrizen dazu auch möglichst sparsam eingebbar sein (also ohne
Komma, &, \\
), sonst wäre es kein gescheites Applet.Daher suche ich auch teilweise nicht einfach nach einer BruteForce Lösung um jeden Preis. Das ist ganz einfach der Hintergrund.
\pgfplotstableread
benötigt catcode Änderungen (zumindest ist in der Definition von\pgfplotstableread@impl
das schöne Macro\pgfplotstablecollectoneargwithpreparecatcodes
, dessen Name förmlich schreit, dass es schief geht). Ohne ein manuelles Setzen vonrow sep
benötigt\pgfplotstableread
also Veränderungen von catcodes, die im Argument von\newcommand
nicht mehr durchgeführt werden können (ohne fiese Tricks). Wie sonst sollte es das Ende einer Zeile von einem Leerzeichen zwischen Spalten unterscheiden?@Skillmon Und ich dachte, das müsste ggf. auch wie in Deiner anderen Antwort gehen. Da hab ich mich wohl geirrt.