使用 LuaLaTeX 自動字距調整

使用 LuaLaTeX 自動字距調整

有沒有辦法在句點上方直接排版右雙引號(如果引用以句點結尾)?不在左側(例如“.”),不在右側(例如“.”),而是在正上方。下面的照片就是一個例子樹、地圖和定理讓-呂克·杜蒙著。

句號正上方的右雙引號。

答案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隨字體大小縮放這樣的度量應該可以很好地工作。

使用 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,並且需要為您想要使用的每種字體添加自訂字距調整資訊。

使用 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

這裡我用的是棧。 “L”代表stacktype長,“S”代表短(預設)。如果為“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}

八個強制參數是:

  • 堆疊距離
  • 錨點項目
  • 堆疊物品
  • O(ver) 或 U(nder) 堆疊
  • l(左) c(輸入) 或 r(右) 水平對齊
  • T/F 表示「quietstack」(「T」表示已建立但未列印)
  • T/F 表示「useanchorwidth」(「T」表示錨點寬度決定整個堆疊寬度)
  • S(短)或 L(長)堆疊

相關內容