
Мне кажется, что описанное поведение — это bytefield
баг пакета v2.2. Может быть, я ошибаюсь и standalone
v1.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}