Wenn ich Textelemente mit MetaPost dekoriere oder kleine MetaPost-Bilde einbinde, die Text enthalten, möchte ich an der Grundlinie aka baseline ausrichten.
Die y-Koordinate der Grundlinie von mit btex ... etex gesetztem Text ist in MetaPost im Normalfall Null. Für die Positionierung der Grafik in TeX ist jedoch die Bounding-Box maßgeblich. Diese wird durch Unterlängen im Text oder weitere Grafikelemente bestimmt, wie hier dem Kreis. Um zu erreichen, dass in TeX die Grundlinie der MetaPost-Grafik mit der Grundlinie der aktuellen Zeile übereinstimmt, muss die Bounding-Box der Grafik unterhalb der Abszisse abgeschnitten werden. Dies lässt sich mit Hilfe des Kommando setbounds erreichen. Zusätzlich muss die interne Variable bboxmargin auf Null gesetzt werden, die einen Zuschlag zur eigentlichen Bounding-Box festlegt. Im folgenden Beispiel wird ein Makro schneide_unterhalb definiert, welches die Korrektur der Bounding-Box vornimmt. Argument ist eine y-Koordinate. Das Makro muss als letztes vor endfig ausgeführt werden.
Zumindest in MetaPost. Die Umgebung mplibcode des Pakets luamplib scheint übergreifende Variablenzuweisungen momentan nicht zu unterstützen. Als Behelf kann man die Makrodefinition und die Zuweisung an extra_endfig auch in eine Datei schreiben und diese in jeder Umgebung per input einbinden. Es empfiehlt sich dann, statt des
Makroparameters eine neue interne Variable einzuführen.
Bindet man dieses Paket ein, wird die Bounding-Box jeder Grafik unterhalb der y-Koordinate Null abgeschnitten. Durch Zuweisungen an die Variable lowerbb kann man die y-Kordinate für einzelne Grafiken ändern. Die Zuweisungen sollten lokal mittels interim erfolgen, da luamplib in Zukunft möglicherweise umgebungsübergreifende Zuweisungen unterstützt.
Das MP-Bild wird so eingefügt, dass die Unterkante auf der Basislinie liegt. Du musst also schon in MP dem Ganzen eine Tiefe (depth) mitgeben oder eben einfach die Abbildung verschieben:
Danke, auch für den Tipp, dass TL 2013 das mitbringt! Statt des Verschiebens hoffe ich halt, dass etwas ähnliches machbar ist wie mit der baseline-Option für TikZ-Bilder.