
Есть ли способ набрать правую двойную кавычку прямо над точкой (если цитата заканчивается точкой)? Не слева (например, .), не справа (например, ".), а прямо над. На фото ниже пример изДеревья, карты и теоремыЖан-Люк Думон.
решение1
Один из способов — добавить отрицательный «кернинг» между кавычками и точкой:
\documentclass{article}
\begin{document}
Here is an unkerned quotation mark: ``\dots''.
Here is a kerned quotation mark: ``\dots''\kern-0.5em.
\end{document}
Команда TeX \kern-0.5em
вставляет отрицательный пробел между кавычками и следующей точкой. Вам придется немного поиграть с точным интервалом, но использование меры, например -0.5em
which, будет масштабироваться вместе с размером шрифта, должно работать достаточно хорошо.
Автоматический кернинг с LuaLaTeX
Как предлагали другие, вы можете сделать это с помощью макросов, но если вы хотите сделать это автоматически, вам, по-видимому, нужно включить эту информацию о кернинге в специфичную для шрифта таблицу кернинга. Это можно сделать с помощьюLuaLaTeXследующее:
Сначала создайте файл:Palatino.fea
languagesystem DFLT dflt;
languagesystem latn dflt;
feature kern {
pos \quotedblright \period -1000;
} kern;
Теперь загрузите эту информацию о шрифте, используя fontspec
:
\documentclass{article}
\usepackage{fontspec}
\setmainfont[FeatureFile=Palatino.fea]{Palatino}
\begin{document}
Here is an automatically kerned quotation mark: ``\dots''.
Here is a manually kerned quotation mark: ``\dots''\kern-0.5em.
\end{document}
Обратите внимание, что вам нужно скомпилировать это lualatex
сейчас, и вам нужно будет добавить пользовательскую информацию о кернинге для каждого шрифта, который вы хотите использовать.
решение2
Я бы установил это просто как \rlap
точку -ed (или, в понимании LaTeX, \makebox[0pt][l]
), обернутую в макрос:
\documentclass{article}
\newcommand{\qperiod}{\rlap{.}}
\begin{document}
Some text: ``\dots''.
Some text: ``\dots''
Some text: ``\dots\qperiod''
\end{document}
Макро-обертка позволяет при необходимости вносить изменения глобально.
решение3
Здесь я использую стек. Это stacktype
либо «L» для Long, либо «S» для Short (по умолчанию). Если «L», то «расстояние» стекирования равно от базовой линии до базовой линии. Установка в 0pt
, это говорит о том, что два компонента имеют одну и ту же базовую линию (в отличие от этого, короткое расстояние стека — это вертикальный зазор между верхом «якоря» и низом сложенного элемента). определяет stackalignment
горизонтальное выравнивание (по умолчанию c=center). Здесь я установил его для выравнивания по левому краю.
\documentclass{article}
\usepackage{stackengine}
\renewcommand\stacktype{L}
\renewcommand\stackalignment{l}
\begin{document}
by ``\dots\stackon[0pt]{.}{''}
\end{document}
Того же результата можно добиться, минуя все настройки параметров, используя универсальный stackengine
макрос с 8 обязательными аргументами:
by ``\dots\stackengine{0pt}{.}{''}{O}{l}{F}{F}{L}
Восемь обязательных аргументов:
- расстояние укладки
- якорный элемент
- сложенный элемент
- О(верх) или У(не)стек
- l(левый), c(вход) или r(правый) горизонтальное выравнивание
- T/F для «quietstack» («T» означает создано, но не напечатано)
- T/F для «useanchorwidth» («T» означает, что ширина якоря определяет общую ширину стека)
- S (короткий) или L (длинный) стек