如何让两个标志更加接近?

如何让两个标志更加接近?

我经常使用这两个标志的组合

  1. · (用于分词)
  2. | (用于显示词尾连接单词的位置)

比如经常出现这种组合··|(··主段+|结尾)。

在少数例外情况下,我需要将 · 和 | 放得更近一些。在特殊情况下,如何将这些符号放得更近一些?

\documentclass[8pt]{extbook}
\usepackage{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\begin{document}
 % normal
 hug·sjóna··|maður

 %closer
 hug·sjóna··|maður
\end{document}

答案1

您几乎肯定不希望在中心点之后换行,因此使用可以稍后检查的惩罚是有意义的。

\documentclass[fontsize=8pt]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar}

\newunicodechar{·}{\chejnikcdot}
\makeatletter
\newcommand{\chejnikcdot}{%
  \ifnum\lastpenalty=10042
    \kern-0.06667em\relax % dots should always be kerned
  \fi
  \textperiodcentered
  \@ifnextchar|{\kern\chejnikkern\relax}{\penalty10042 }%
}

\newcommand{\closeupdotbar}{%
  \renewcommand\chejnikkern{-0.06667em}%
}
\newcommand\chejnikkern{0pt} % default


\begin{document}

\begin{tabular}{ll}
No kerning & hug\textperiodcentered sjóna\textperiodcentered\textperiodcentered|maður \\
Kerning & hug·sjóna··|maður \\
Kerning plus & \closeupdotbar hug·sjóna··|maður
\end{tabular}

\end{document}

改变\closeupdotbar(局部)居中句号和竖线之间的字距。在普通文本中,你可以这样做

{\closeupdotbar hug·sjóna··|maður}

适用于特殊情况。其他接口也是可能的。

\chejnikdot会回顾:如果它看到值为 10042 的惩罚项,则意味着已排版了居中点,因此宏会应用字距调整。然后它会排版居中点并发出惩罚,这除了是一个信号之外,还禁止在该位置换行。

在此处输入图片描述

答案2

\documentclass[fontsize=8pt]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar,etoolbox}

\newif\ifclosersigns
\newunicodechar{·}{\advancedcdot}
\makeatletter
\newcommand*\advancedcdot{\textperiodcentered
  \ifclosersigns\expandafter\@firstofone
  \else\expandafter\@gobble\fi{\@ifnextchar|{\hspace{-0.06667em}}{}}}
\makeatother

\begin{document}
 % normal
 hug·sjóna··|maður

\closersignstrue

 %closer
 hug·sjóna··|maður
\end{document}

另外从··和中删除空格·|(不是完全健全,但我认为足够了)。

\documentclass[fontsize=8pt]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{newunicodechar,etoolbox}

\newunicodechar{·}{\advancedcdot}
\makeatletter
\newcommand*\advancedcdot{\textperiodcentered
  \@ifnextchar|{\hspace{-0.06667em}}{\checkifcdotnext}}
\newcommand*\checkifcdotnext[2]
  {\def\tmpa{·}\def\tmpb{#1#2}\ifx\tmpa\tmpb\hspace{-0.06667em}\fi#1#2}
\makeatother

\begin{document}

 %closer
 hug·sjóna··|maður

\end{document}

更稳健一点的是

\newcommand*\advancedcdot{\textperiodcentered
  \@ifnextchar|{\hspace{-0.06667em}}{\@ifnextchar^^c2{\checkifcdotnext}{}}}
\newcommand*\checkifcdotnext[2]
  {\def\tmpa{·}\def\tmpb{#1#2}\ifx\tmpa\tmpb\hspace{-0.06667em}\fi#1#2}

相关内容