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}

여기에 이미지 설명을 입력하세요

관련 정보