
Ich muss einige Balkendiagramme in ein ConTeXt-Dokument einfügen. Ich verwende mkiv von TeX Live 2011 unter Gentoo GNU/Linux. Ich habe versucht, Gnuplot zu verwenden, aber ich habe festgestellt, dass mpgraph
es meinen Anforderungen besser entspricht.
Ich verwende diese TeX-Datei
\usemodule[graph]
\usemodule[sarith]
\enableregime[utf-8]
\starttext
\startMPcode
beginfig(1)
draw begingraph(12cm,6cm);
glabel.lft(btex Eje Y etex, OUT);
glabel.bot(btex Eje X etex, OUT);
gdata("data.d",
$,
path p;
augment.p (0,$1);
augment.p ($2,$1);
augment p ($2,$1 Sadd "1");
augment p (0,$1 Sadd "1");
gdraw p withpen pencircle scaled 2bp withcolor red;
);
autogrid(grid.bot,grid.lft) withcolor .85white;
endgraph;
endfig;
\stopMPcode
\stoptext
und diese Datendatei
1 4
2 2
3 1
4 2
5 4
als minimales „funktionierendes“ Beispiel.
Allerdings passiert etwas Seltsames: Ich kann keinen Operator aus sarith
dem Modul verwenden (wird im mpgraph
Modul zum Zeichnen von Boxen verwendet). Ich habediese Ausgabemit ConTeXt. Ich habe versucht, mit Metapost zu kompilieren, obwohl ich keine Fehler oder Warnungen erhielt, ist die Ausgabedatei .dvi beschädigt.
Ich habe es auch mit TeX Live 2012 unter Windows 7 versucht. Ich kann es wegen der sarith
Sache dort nicht kompilieren, aber wenn ich diese Zeilen kommentiere, funktioniert es. Aber dasselbe in meiner Gentoo-Box zu tun, funktioniert, außer dass der Text für Beschriftungen oder Achsen nicht erscheint, nur ein sehr kleines Quadrat. Ich verstehe nicht, was passiert, selbst das Beispiel aus dem ConTeXt-Wiki funktioniert nicht. Hinweise? Jede Hilfe ist sehr willkommen!
Antwort1
Sie müssen ersetzen \usepackage[sarith]
durch
\startMPinitializations
input sarith;
\stopMPinitializations
sarith
ist kein ConTeXt-Modul, sondern ein Metapost-Paket und muss daher am Metapost-Ende eingefügt werden.
Außerdem ist es, wie morbusg anmerkte, nicht nötig, beginfig(1)...endfig
eine MPcode
Umgebung hinzuzufügen. Mit diesen beiden Änderungen funktioniert Folgendes:
\usemodule[graph]
\startMPinitializations
input sarith;
\stopMPinitializations
\starttext
\startMPcode
draw begingraph(12cm,6cm);
glabel.lft(btex Eje Y etex, OUT);
glabel.bot(btex Eje X etex, OUT);
gdata("data.d",
$,
path p;
augment.p (0,$1);
augment.p ($2,$1);
augment p ($2,$1 Sadd "1");
augment p (0,$1 Sadd "1");
gdraw p withpen pencircle scaled 2bp withcolor red;
);
autogrid(grid.bot,grid.lft) withcolor .85white;
endgraph;
\stopMPcode
\stoptext
Antwort2
Beim Ändern der Schriftart für die Zahlen in den Rastern habe ich festgestellt, dass die Schriftart in das Dokumentformat konvertiert wird, wenn ich die Rasterwerte manuell einstelle, anstatt die automatische Einstellung zu verwenden. Hier ist ein Beispiel aus John Handys MPGraph-Dokumentation mit meiner Überarbeitung:
Original
draw begingraph(6.5cm,4.5cm);
setrange(80,0, 90,whatever);
glabel.bot(btex Year etex, OUT);
glabel.lft(btex \vbox{\hbox{Emissions in} \hbox{thousands of}
\hbox{metric tons} \hbox{(heavy line)}}etex, OUT);
gdraw "lead.d" withpen pencircle scaled 1.5pt;
autogrid(,otick.lft);
setcoords(linear,linear);
setrange(80,0, 90,whatever);
glabel.rt(btex \vbox{\hbox{Micrograms} \hbox{per cubic}
\hbox{meter of air} \hbox{(thin line)}}etex, OUT);
gdraw "lead.d";
autogrid(otick.bot,otick.rt);
endgraph;
mit
draw begingraph(6.5cm,4.5cm);
setrange(79.5,0, 90.5,80) ;
glabel.bot(btex Year etex, OUT) shifted(-8pt,-2pt);
glabel.lft(btex \vbox{% -- \hss fills space horizontally; \strut fixes line space
\hbox to 5cm {\hss \strut Emissions in thousands of \hss}
\hbox to 5cm {\hss \strut metric tons (solid line) \hss}
}
etex, OUT) shifted(83pt,17pt) rotated 90;
gdraw "lead.d" withpen pencircle scaled 1pt;
itick.lft(format("\%2",0),0) withcolor white;
itick.lft(format("\%2",20),20) withcolor white;
itick.lft(format("\%2",40),40) withcolor white;
itick.lft(format("\%2",60),60) withcolor white;
itick.lft(format("\%2",80),80) withcolor white;
frame.lft withcolor white ;
otick.bot(format("\%2",80),80) withcolor white;
otick.bot(format("\%2",82),82) withcolor white;
otick.bot(format("\%2",84),84) withcolor white;
otick.bot(format("\%2",86),86) withcolor white;
otick.bot(format("\%2",88),88) withcolor white;
otick.bot(format("\%2",90),90) withcolor white;
endgraph;
Probieren Sie dies aus.