Binäre Daten in TeX \special

Binäre Daten in TeX \special

Ich möchte fragen, ob ich binäre Informationen ausgeben kann \special. Wenn das möglich ist, wie füge ich die Binärdatei in die TeX-Quelle ein? In C/C++ \0kann beispielsweise verwendet werden, um das Byte abzurufen. 00000000Was könnte also das Äquivalent für TeX sein?

Antwort1

Wenn Sie meinen, ob ich \specialin die Quelldatei etwas gefolgt von etwas eingeben kann, .texum Binärdaten in die DVI-Datei zu bekommen, dann ist die Antwort nein (siehe aber unten). Das liegt daran, dass es in TeX \specialnichts wirklich Besonderes ist: Es ist nur ein primitiver Befehl (wie \defoder \write), und er schreibt einfach die Token aus, die in angegeben sind \special{...}, während er sie erweitert und so weiter (wie \edefoder \xdef). Da es schwierig ist, beliebige Binärdaten in eine TeX-Tokenliste zu bekommen, können Sie diese nicht in eine DVI-Datei schreiben. (Siehe jedochdiese Antwortwas auf eine Möglichkeit hinweist, wie es mithilfe von möglich sein könnte (nur möglich, nicht einfach!) pdflatex -8bit.)

Die entsprechenden Abschnitte aus dem TeX-Programm (siehetexdoc tex), was zeigt, dass \specialVerwendungen show_token_listusw.:

<code>\spezial</code> <code>\spezial</code>

Selbst wenn Sie binäre Daten aus der TeX-Quelle ausschreiben könnten, würde das funktionieren? Das DVI-Format selbst unterstützt beliebige binäre Daten innerhalb von Sonderzeichen (auch bekannt als xxx1to- xxx4Befehle). Es besteht jedoch die Konvention, dass die Daten Text sind; tatsächlich dvitypewird ein Fehler oder eine Warnung ausgegeben, wenn ein xxxBefehl Nicht-ASCII-Daten enthält.

<code>dvityp</code>

Natürlich kann dies nur eine Konvention aus der Zeit sein, als DVItype geschrieben wurde (letzte Aktualisierung 1995), und ich habe die von verschiedenen Paketen erzeugten DVI-Sonderzeichen (oder was XeTeX in seinem .xdvFormat macht) nicht untersucht. Es ist also möglich, dass Sie dort Binärdaten haben und damit durchkommen – zumindest in einigen DVI-Treibern, da die Interpretation des Sonderzeichens vollständig dem DVI-Treiber überlassen ist. Aber wenn Sie Ihren eigenen DVI-Treiber schreiben (was vorausgesetzt wird, wenn Sie dort ungewöhnliche Sonderzeichen einfügen), können Sie die Binärdaten genauso gut in Base64 oder einer ähnlichen Nur-ASCII-Kodierung schreiben und sie dann vom Treiber in beliebige Daten dekodieren lassen.

verwandte Informationen