0 голосов
307 просмотров

Я хотел бы, чтобы номер сноски внизу страницы отображался в поле, чтобы при наличии нескольких сносок было проще определить, где они начинаются и заканчиваются, и какой номер соответствует какой. Каждая сноска представляет собой отдельный абзац.

Это кажется напрямую аналогичным опции «висячий номер стиха» для поэзии.

Я переопределил маркер вызова (по другим причинам) как z_f_caller_bottom
Вот начало:
\sethook{start}{z_f_caller_bottom}{\kern -13pt}
но трудно заставить следующую часть сноски (ссылку \fr) автоматически выравниваться по начальному полю. И когда нумерация сносок переходит на двузначные числа, эта ссылка смещается слишком далеко по строке.

Я также пробовал экспериментировать с фрагментом здесь), но пока не удалось заставить его работать.

Есть ли какой-то другой способ сделать это?

Переведено машиной с языка English
PTXprint от (1,9тыс. очков) | 307 просмотров

2 Ответов

0 голосов

Помогает ли вам изменение отступа первой строки в стиле сноски? Вы должны иметь возможность сделать его отрицательным, чтобы он отображался в поле.

Переведено машиной с языка English
от (9,9тыс. очков)

Ну, это неловко, но гораздо более простой и интуитивно понятный способ сделать то же самое, что я сделал с помощью sethook и отрицательного кернинга…

Но это не решает мою проблему, которая заключается в том, что когда нумерация сносок переходит с однозначных на двузначные числа, это нарушает интервалы (т. е. положение основной сноски относительно поля).

Переведено машиной с языка English
0 голосов

Вы на самом деле очень близки с вашим sethook, но, вероятно, вам нужно не просто делать кернинг, а поместить это в коробку (box), а затем применить к ней \llap, скорее вот так (не проверено):

\sethook{start}{z_f_caller_bottom}{\setbox0\hbox\bgroup}
\sethook{end}{z_f_caller_bottom}{\egroup\llap{\box0\kern3pt}}

\llap сдвигает свое содержимое влево так, что не занимает ширины (у него есть «друг» \rlap, если кому-то нужно накладывать элементы справа), поэтому я пытаюсь создать коробку, содержащую вызывающий элемент, добавить к ней 3pt пространства (вы можете выбрать другое число), а затем заставить все это висеть слева от абзаца. Надеюсь, это сработает!

Примечание: \box0 безопасно использовать, потому что (проверив в файле .tex) именно это на самом деле используется для получения вызывающего элемента. (Временное использование \box0 в середине определения box0 не переопределит другие коробки).

Примечание 2: Обычное пространство между сноской и вызывающим элементом — это \kern\NoteCallerSpace
Примечание 3: llap должен давать коробку нулевой ширины. Если у вас ширина не равна нулю, то результат будет центрирован в коробке шириной \NoteCallerWidth и за ним будет следовать NoteCallerSpace. Возможно, это именно то, что вам нужно, а возможно, и нет!

Переведено машиной с языка English
от (1,1тыс. очков)

Спасибо. Это отлично сработало. Я догадывался, что \llap может быть полезен, но не мог понять, как прочитать содержимое вызывающего элемента. Я пробовал { }, что, очевидно, не работает, и забыл про \bgroup и \egroup.

Чтобы лучше это понять:

  • Является ли box0 именем переменной, а \setbox0 присваивает ей значение, равное содержимому вызывающего элемента?
  • И (полагаю, вы имели в виду), вы выбрали эту конкретную переменную, потому что она уже использовалась для вызывающего элемента, — так что вы знали, что она не будет конфликтовать с чем-либо еще.
  • Как вы предотвращаете обработку вызывающего элемента сноски обычным способом? Это потому, что он находится внутри \bgroup, пока TeX переходит от начала z_f_caller_bottom к концу?
Переведено машиной с языка English

Пункт 1a: (Внутренне) все «фрагменты, которые попадают на страницу, но с которыми экспериментируют» в TeX — это \box 0....\box 65535. (или \box0 ...., в обычных условиях пробел просто помогает людям читать, но в некоторых условиях он может вызвать ошибку).

Номера сбивают с толку, поэтому мы можем использовать \newbox\something, чтобы заменить номер меткой (\something), если хотим зарезервировать его постоянно. \box 0 до \box9 зарезервированы как временные ящики без имени. Различные другие ящики также зарезервированы для специальных функций.

Просто \box 0 выведет содержимое ящика и очистит определение. \copy 0 выведет ящик и сохранит определение. Чтобы определить содержимое, синтаксис выглядит как \setbox[number/label][some box], где [some box] — это \hbox{contents}, \vbox{contents} или \box или \copy

Пункт 2: Я предположил, что box0 безопасен как временный ящик общего назначения, а затем, сомневаясь, проверил это.

Пункты 3 и 1b: Поскольку вы используете z_f_caller_bottom для стиля вызывающего примечания (note caller), вызывающий элемент в тексте и вызывающий (или вызываемый) элемент в области примечаний обрабатываются по-разному.

Допустим, соответствующий вызываемый элемент (callee) для данного примечания — это ¤. Обычно в этом случае код определяет \box0 как (по сути) \hbox{\+z_f_caller_bottom ¤\+z_f_caller_bottom*} (хотя он не фактически генерирует именно этот код). Затем он обрабатывает этот ящик так же, как и любой вызываемый элемент:

  • он измеряет ширину этого ящика, и если она ненулевая, но уже, чем \NoteCallerWidth, он дополняет его до этого размера (чтобы элементы выстраивались более аккуратно).
  • Если результат имеет ненулевую ширину, он добавляет \NoteCallerSpace

Код, который я вам дал, интерпретируется так, как будто стили символов применяются внутри ящика, поэтому по сути он превращается в:

\setbox0{\+z_f_caller_bottom
  \setbox0\bgroup 
  ¤ 
  \egroup\llap{box0 \kern 3pt}
\+z_f_caller_bottom*}

За исключением того, что (a) если бы вы ввели это, это почти наверняка сломалось бы из-за catcodes, пробелов и других опасных и сбивающих с толку вещей, и (b) хуки (hooks) на самом деле обрабатываются посередине кода начала и конца для z_f_caller

Переведено машиной с языка English

Похожие вопросы

+1 голос
1 ответ 190 просмотров
Моя проблема: Иногда в основном тексте ссылка на сноску, автоматически создаваемая в алфавитном порядке, печатается ... , как напечатать новое форматирование ссылок на сноски?
Y Mdu Niê 124 задал вопрос янв 14
0 голосов
2 ответов 187 просмотров
Здравствуйте, Я работаю над проектом, в котором все ссылки на сноски ранее помечались вручную. Теперь мы начали ... я просто что-то упускаю из виду. Спасибо, Аарон
PecanMango 112 задал вопрос ноя 6, 2024
0 голосов
3 ответов 273 просмотров
Я обнаружил, что мое ключевое слово, набранное жирным шрифтом, сразу же соединяется с текстом сноски, который всегда ... работает нормально, по крайней мере, это очень удобно.
joop 110 задал вопрос сен 9, 2022
0 голосов
7 ответов 343 просмотров
Пользователь добавил сноску в конец основного заголовка (но я вижу такое же поведение, если сноска находится в вводном абзаце ... в PDF. Кто-нибудь знает, почему это происходит?
Phil_Leckrone 9,9тыс. задал вопрос авг 5, 2021
0 голосов
1 ответ 42 просмотров
Здравствуйте! В PTXPrint я хотел бы использовать опцию Висячие номера стихов для поэзии (Hanging Poetry Verse Numbers ... сбить наших читателей с толку. Большое спасибо! Фил
anon913937 124 задал вопрос ноя 18, 2025
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
They all joined together constantly in prayer, along with the women and Mary the mother of Jesus, and with his brothers.
Acts 1:14
3,049 вопросов
6,007 ответов
5,673 комментариев
2,029 пользователей