スタンドアロンクラスでバイトフィールドを使用するとフィールド番号が削減されます

スタンドアロンクラスでバイトフィールドを使用するとフィールド番号が削減されます

私にとって、説明されている動作は、bytefieldv2.2 パッケージのバグのように見えます。おそらく、私が間違っていて、standalonev1.2 にもバグがあるのでしょう。あるいは、単に私が間違っているだけかもしれません。

この最小限の例をタイプセットする

\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}

pdflatex を使用すると、ビットフィールドが極端に切り取られてしまいます。

出力がきつすぎる

上の境界線は非常に狭く、他の境界線はフレーム ピクセルをカットするため少し狭すぎます。これはbytefieldバグだと考え、回避策を見つけようとしました。

で示唆されているようにこの質問スタンドアロンの境界線を拡大すると、バイトフィールド番号が少なくとも部分的に表示されます。

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

次のような結果になります:

不完全に拡張された境界

これにより、下/左/右の境界の問題は解決されますが、上の境界の問題は解決されません。これはstandaloneバグのようです。

を使用すると、\documentclass[border=2mm]{standalone}期待どおりにすべての境界線が拡張されます。現在の回避策は、バイトフィールド番号が表示されるように、すべての境界線を約 2 mm 拡張することです。

私にとって、この回避策は非常に残念です。なぜなら、私は自動化された環境でスタンドアロンクラスを使用して多くのPDFを作成しており、そのうちバイトフィールドはほんのわずかだからです。したがって、全てborderバイトフィールド環境ではオプションのパラメータとして受け入れないため、境界が存在します。

他に回避策は知られていますか?

答え1

ここで問題となるのは、上部のインデックス番号が境界ボックスbytefieldバイトフィールド テーブルの。これは、通常のドキュメント内で環境を使用して、その周囲に追加するだけで確認できます\frame{...}。結果のフレームでは、インデックス番号もカットされます。

これはbytefield、インクルードpicture環境でインデックス番号の高さが考慮されていないために発生するものと思われます。

正式なサイズは「インク」ではなく正式な境界ボックスによって決定されるため、その後は他の TeX ツールで何も行うことはできませんstandalone。生成された「インク」を参照して正しい境界ボックスを再計算できるのは、ghostscript などのレンダリング ツールだけです。

\documentclass解決策としては、単に周囲に境界線を追加します。オプション処理コードからスペースを保護するために、数字を中括弧で囲んで追加する必要があるため、コード例は機能しません。

以下は機能します (0.5 (=0.5bp; 大きなポイント) がデフォルトの境界であることに注意してください)。

\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}

関連情報