我经常使用这两个标志的组合
- · (用于分词)
- | (用于显示词尾连接单词的位置)
比如经常出现这种组合··|(··主段+|结尾)。
在少数例外情况下,我需要将 · 和 | 放得更近一些。在特殊情况下,如何将这些符号放得更近一些?
\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}