在 LaTeX 中规范堆叠字符后的空格:排版 o͘

在 LaTeX 中规范堆叠字符后的空格:排版 o͘

我正在尝试排版特点在 LaTeX 中,通过在字母顶部堆叠一个凸起的句号来实现o。我所获得的结果的间距不一致,如下面的屏幕截图所示:

字距调整不当 o͘

请注意,字符后的空格比常规字符后的空格更大o

虽然我可以尝试手动调整间距,但我希望有一个更通用的解决方案,并且不依赖于包含特殊字符的字体。

以下是 MWE:

\documentclass{article}

\newlength{\templen}
\newlength{\templentwo}

\newcommand{\oo}{%
  \settowidth{\templen}{o}%
  \settowidth{\templentwo}{.}%
  o\hspace{\dimexpr-\templen/2\relax}%
  \raisebox{1ex}{.}%
  \hspace{\dimexpr-\templentwo\relax}
}

\begin{document}

o\oo o \oo oo \oo\oo o ooo

\end{document}

更新

在提供的答案的帮助下,我找到了以下解决方案。为了方便将来参考,我附上了完整的代码,显示了该字符与其他变音符号的排版。

\documentclass{article}

\usepackage{stackengine}
\usepackage{upquote}

\renewcommand{\.}[1]{\stackinset{c}{}{t}{-0.75ex}{\textquotesingle}{#1}}

\newcommand{\OX}{o\DOTABOVERIGHT{o}{0.6}\leavevmode\phantom{o}}
\DeclareRobustCommand{\DOTABOVERIGHT}[2]{%
  \kern-\fontcharwd\font`#1% back up
  \makebox[0pt][l]{%
    \sbox0{\leavevmode\phantom{#1}}%
    \raisebox{\ht0}[0pt][0pt]{\kern#2\wd0 .}%
  }%
}

\newcommand{\OO}[1]{\stackinset{r}{}{t}{-1.5pt}{.}{#1}}



\begin{document}

So-i goan u siat pat-mih e hoat-to, eng peh-oe-ji lai in-chheh, ho lin cheng-lang khoa\textsuperscript{n} khah khoai bat.

S\OO{\'{o}}-\'{i} g\'{o}an \={u} siat p\.{a}t-mih \^{e} hoat-t\OO{\={o}}, \={e}ng p\.{e}h-\={o}e-j\={i} l\^{a}i \`{i}n-chheh, h\OO{\={o}} l\'{i}n ch\`{e}ng-l\^{a}ng kh\`{o}a\textsuperscript{n} khah kh\`{o}ai bat.

S\'{\OX}-\'{i} g\'{o}an \={u} siat p\.{a}t-mih \^{e} hoat-t\={\OX}, \={e}ng p\.{e}h-\={o}e-j\={i} l\^{a}i \`{i}n-chheh, h\={\OX} l\'{i}n ch\`{e}ng-l\^{a}ng kh\`{o}a\textsuperscript{n} khah kh\`{o}ai bat.

Thai-khong peng-iu, lin-ho. Lin chiah-pa--be? U-eng, toh lai gun chia che--o!

Th\`{a}i-khong p\^{e}ng-i\'{u}, l\'{i}n-h\'{o}. L\'{i}n chi\.{a}h-p\'{a}--b\={e}? \={U}-\^{e}ng, t\.{o}h l\^{a}i g\'{u}n chia ch\={e}--\OO{\^{o}}!

Th\`{a}i-khong p\^{e}ng-i\'{u}, l\'{i}n-h\'{o}. L\'{i}n chi\.{a}h-p\'{a}--b\={e}? \={U}-\^{e}ng, t\.{o}h l\^{a}i g\'{u}n chia ch\={e}--\^{\OX}!


\end{document}

以下是排版文本的图像:

正确调整字距 o͘

我个人偏爱\OX变音符号正确显示在上方的版本

答案1

如果您想要保留字母之间的自动字距调整,则需要打印两次“o”,将它们叠加,但在中间添加一个凸起的点。

\documentclass{article}

\newcommand{\oo}{o\DOTABOVERIGHT{o}{0.6}o}
\DeclareRobustCommand{\DOTABOVERIGHT}[2]{%
  \kern-\fontcharwd\font`#1% back up
  \makebox[0pt][l]{%
    \sbox0{#1}%
    \raisebox{\ht0}[0pt][0pt]{\kern#2\wd0 .}%
  }%
}

\begin{document}

o\oo o \oo oo \oo\oo o ooo

ooo  ooo ooo ooo

\end{document}

\DOTABOVERIGHT命令接受两个参数:应应用点的字母和偏移量(字母宽度的分数)。

在此处输入图片描述

答案2

如果我理解你想要什么,这里有一个使用 \stackinset 命令的解决方案stackengine

\documentclass{article}

\usepackage{stackengine}

\newcommand{\Oo}{\stackinset{r}{}{t}{-1.5pt}{.}{o}}

\begin{document}

o\Oo o \Oo oo \Oo\Oo o ooo

\end{document}

在此处输入图片描述

相关内容