In meinem Tex-File steht:

aaa \special{pdf: begintransform rotate 35} rotated \special{pdf: endtransform} bbb

Mit XeTex erhalte ich das Wort "rotated" um 35 Grad gedreht. Mit pdfTex und LuaTex wird das Wort nicht gedreht (auch nicht mit \pdfliteral statt \special).

Gelernt habe ich inzwischen, dass XeTex dvipdfm verwendet. Ich schließe daraus, dass XeTex das althergrbrachte DVI erzeugt und dann in PDF umwandelt (mehr oder weniger). PdfTex erstellt das PDF auf eigene Weise, nehme ich an, ohne den Umweg über DVI und ohne dvipdfm. Daher funktioniert der o.g. dvipdfm-spezifische rotations-Befehl hinter "pdf:" nicht.

Den Code vom LaTex-Paket graphicx habe ich mir angesehen, doch die entscheidenden Stellen finde ich darin nicht.

Ich finde einfach keine Entsprechung dieses rotate-Befehls in pdfTex und LuaTex. Wer kann mir einen Hinweis geben?

Viele Grüße Peter

gefragt 22 Feb '21, 16:49

altesCoon's gravatar image

altesCoon
8127
Akzeptiert-Rate: 100%

bearbeitet 22 Feb '21, 16:53

Rotation ist in PDF eine Matrix-Operation. Bei pdfTeX geht das beispielsweise über \pdfsetmatrix. LuaTeX hat entsprechendes mit Hilfe von \pdfextension. In den graphics-Treibern findet man den Code unter \Grot@start\Grot@end. Die Optionen/Werte für die Einstellungen sind zu dem Zeitpunkt bereits gesetzt.

Es ist aber wirklich nicht sinnvoll, das Rad komplett neu zu erfinden. In den Backend-Treibern steckt teilweise sehr viel Fachwissen auch beispielsweise über das PDF-Format. Um das in Gänze zu verstehen, muss man auch die PDF-Spezifikation studieren!

(22 Feb '21, 18:45) saputello

Hab meinen Denkfehler gefunden (zeitgleich mit saputellos Kommentar): "pdf: begintransform rotate 35" ist ein spezielles dvipdfm-Kommando.

"\pdfliteral" aber, das "\special" von pdfTex, erwartet PDF-Kommandos, für die Rotation tatsächlich die Rotationsmatrix. Diese sieht für die Rotation so aus: "cos alp sin alp -sin alp cos alp 0 0 cm"

aaa \pdfliteral{0.87 +0.5 -0.5 0.87 0 0 cm} rotate \pdfliteral{0.87 -0.5 0.5 0.87 0 0 cm} bbb

erzeugt in pdfTex ein horizontales "aaa", ein schräges "rotate" und ein horizontales "bbb", das direkt am Ende des schrägen "rotate" ansetzt (und nicht etwa auf der ursprünglichen Grundlinie). Wie ich das auf einen kurzen Text beschränke und danach normal weiterschreibe auf der alten Grundlinie, muss ich noch herausfinden ... (Edit: gefunden: mit "\pdfsave" und "\pdfrestore" bzw. "\pdfextension save\relax" und "\pdfextension restore\relax")

In LuaTex funktioniert alles statt mit "\pdfliteral" mit "\pdfextension literal{...}". Außerdem gibt es in pdfTex – wie auch von saputello angemerkt – den direkten Befehl "\pdfsetmatrix" und in LuaTex "\pdfextension setmatrix".

Viele Grüße Peter

Permanenter link

beantwortet 22 Feb '21, 19:30

altesCoon's gravatar image

altesCoon
8127
Akzeptiert-Rate: 100%

bearbeitet 22 Feb '21, 19:45

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×27
×3
×2
×2
×1

gestellte Frage: 22 Feb '21, 16:49

Frage wurde gesehen: 2,232 Mal

zuletzt geändert: 22 Feb '21, 19:45