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

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

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

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

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

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

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

2 Ответов

0 голосов

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

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

Ну, это неловко, но гораздо более простой и интуитивно понятный способ сделать то же самое, что я сделал с помощью 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 ответ 274 просмотров
Моя проблема: Иногда в основном тексте ссылка на сноску, автоматически создаваемая в алфавитном порядке, печатается ... , как напечатать новое форматирование ссылок на сноски?
Y Mdu Niê 124 задал вопрос янв 14
0 голосов
2 ответов 245 просмотров
Здравствуйте, Я работаю над проектом, в котором все ссылки на сноски ранее помечались вручную. Теперь мы начали ... я просто что-то упускаю из виду. Спасибо, Аарон
PecanMango 112 задал вопрос ноя 6, 2024
0 голосов
3 ответов 333 просмотров
Я обнаружил, что мое ключевое слово, набранное жирным шрифтом, сразу же соединяется с текстом сноски, который всегда ... работает нормально, по крайней мере, это очень удобно.
joop 110 задал вопрос сен 9, 2022
0 голосов
7 ответов 475 просмотров
Пользователь добавил сноску в конец основного заголовка (но я вижу такое же поведение, если сноска находится в вводном абзаце ... в PDF. Кто-нибудь знает, почему это происходит?
[Expert]
Phil_Leckrone
10,0тыс.
задал вопрос авг 5, 2021
0 голосов
1 ответ 147 просмотров
Здравствуйте! В 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.
Very truly I tell you, whoever accepts anyone I send accepts me; and whoever accepts me accepts the one who sent me.
John 13:20
3,062 вопросов
6,022 ответов
5,691 комментариев
2,036 пользователей