Die Verwendung von Bytefield in einer Standalone-Klasse reduziert die Feldnummern

Die Verwendung von Bytefield in einer Standalone-Klasse reduziert die Feldnummern

bytefieldFür mich scheint das beschriebene Verhalten ein Paketfehler in Version 2.2 zu sein . Vielleicht mache ich etwas falsch und standaloneVersion 1.2 ist auch fehlerhaft. Oder ich mache einfach Dinge falsch.

Setzen dieses Minimalbeispiels

\documentclass{standalone}
\usepackage{bytefield}
\begin{document}
    \begin{bytefield}[bitwidth=2.1em]{2}
    \bitheader{0-1} \\ \bitbox{1}{0} \bitbox{1}{2}
    \end{bytefield}
\end{document}

Die Verwendung von pdflatex führt zu einem zu eng zugeschnittenen Bitfeld:

zu eng zugeschnittene Ausgabe

Der obere Rand ist viel zu eng, andere Ränder sind etwas zu eng, da sie einen gerahmten Pixel schneiden. Ich halte das für einen bytefieldFehler und habe versucht, einen Workaround zu finden.

Wie vorgeschlagen indiese Fragekann der Standalone-Rahmen vergrößert werden, wodurch die Bytefeldnummern zumindest teilweise preisgegeben werden:

\documentclass[border=1pt 0pt 1pt 10cm]{standalone}

ergibt dies:

unvollständig verlängerte Grenze

das löst das Problem am unteren/linken/rechten Rand, aber nicht am oberen Rand. Das scheint ein standaloneFehler zu sein.

Die Verwendung \documentclass[border=2mm]{standalone}von erweitert alle Ränder wie erwartet. Der aktuelle Workaround wäre, alle Ränder um ca. 2 mm zu erweitern, um die Bytefeldnummern sichtbar zu machen.

Für mich ist dieser Workaround sehr bedauerlich, da ich mit der Standalone-Klasse in einer automatisierten Umgebung viele PDFs erstelle - nur wenige davon sind Bytefelder. Daher müsste ichalleGrenzen, da die Bytefield-Umgebung diese nicht borderals optionalen Parameter akzeptiert.

Ist eine andere Problemumgehung bekannt?

Antwort1

Das Problem hierbei ist, dass die Indexnummern oben nicht Teil derBegrenzungsrahmender Bytefield-Tabelle. Sie können dies sehen, indem Sie einfach eine bytefieldUmgebung innerhalb eines normalen Dokuments verwenden und \frame{...}darum herum hinzufügen. Der resultierende Rahmen schneidet auch die Indexnummern ab.

bytefieldIch vermute, dies liegt daran , dass die pictureEinschlussumgebung die Höhe der Indexnummer nicht berücksichtigt.

Da die offizielle Größe nicht durch die „Tinte“, sondern durch die offizielle Begrenzungsbox bestimmt wird, gibt es nichts standalone, was kein anderes TeX-Tool danach tun kann. Nur Rendering-Tools wie Ghostscript können die aktuelle Begrenzungsbox neu berechnen, indem sie sich die erzeugte „Tinte“ ansehen.

Als Lösung fügen Sie einfach einen Rahmen darum hinzu. Ihr Codebeispiel funktioniert nicht, da Sie die Zahlen in Klammern setzen müssen, um die Leerzeichen vor dem Optionenverarbeitungscode von zu schützen \documentclass.

Folgendes funktioniert (beachten Sie, dass 0,5 (= 0,5 bp; große Punkte) die Standardgrenze ist):

\documentclass[border={.5 .5 .5 2mm}]{standalone}
\usepackage{bytefield}
\begin{document}
    \begin{bytefield}[bitwidth=2.1em]{2}
    \bitheader{0-1} \\ \bitbox{1}{0} \bitbox{1}{2}
    \end{bytefield}
\end{document}

verwandte Informationen