Использование bytefield в отдельном классе сокращает количество полей

Использование bytefield в отдельном классе сокращает количество полей

Мне кажется, что описанное поведение — это bytefieldбаг пакета v2.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 мм, чтобы сделать номера байтовых полей видимыми.

Для меня этот обходной путь очень неудачен, так как я создаю множество PDF-файлов, используя автономный класс в автоматизированной среде, и только некоторые из них являются байтовыми полями. Таким образом, мне пришлось бы увеличитьвсеграницы, поскольку среда байтового поля не принимает borderв качестве необязательного параметра.

Известны ли какие-либо другие обходные пути?

решение1

Проблема здесь в том, что индексные числа сверху не являются частьюОграничительная рамкатаблицы байтовых полей. Вы можете увидеть это, просто используя bytefieldокружение внутри обычного документа и добавляя \frame{...}вокруг него. Полученная рамка также обрежет индексные номера.

Я полагаю, это вызвано bytefieldтем, что включающая pictureсреда не учитывает высоту индекса.

Нет ничего standalone, или любой другой инструмент TeX может сделать после этого, поскольку официальный размер определяется не "чернилами", а официальным ограничивающим прямоугольником. Только инструменты рендеринга, такие как 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}

Связанный контент