是否可以像古典拉丁铭文那样用中间点(·)代替空格?
例如,以下代码……
\dotseparation{SENATUS POPULUSQUE ROMANUS}
…应像这样出现“SENATUS·POPULUSQUE·ROMANUS”。
编辑1
目标是将虚线空格视为普通空格,并遵循连字符或断线的所有规则。
编辑2
正如我在之前的编辑中所说,这个点空间应该被视为正常空间并表现出相同的行为,尤其是关于stretchpars
。例如,使用下面 Jasper Habicht 给出的解决方案,拉伸不被尊重:
\documentclass[oneside]{article}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\ExplSyntaxOn
\seq_new:N \l__dotseparation_words_seq
\NewDocumentCommand{\dotseparation}{ m }{
\regex_split:nnN { \s } { #1 } \l__dotseparation_words_seq
\seq_use:Nn \l__dotseparation_words_seq { \char"2E31 \hskip0pt }
}
\ExplSyntaxOff
\begin{document}
\begin{center}
\null
\vfill
\newenvironment{stretchpars}
{\par\setlength{\parfillskip}{0pt}}
{\par}
\begin{minipage}{6.8cm}
\begin{stretchpars}
CUI DONO LEPIDUM NOUUM LIBELLUM
ARIDA MODO PUMICE EXPOLITUM ?
CORNELI, TIBI NAMQUE TU SOLEBAS
MEAS ESSE ALIQUID PUTARE NUGAS
\end{stretchpars}
\end{minipage}
\vspace{1cm}
\begin{minipage}{6.8cm}
\begin{stretchpars}
\dotseparation{CUI DONO LEPIDUM NOUUM LIBELLUM}
\dotseparation{ARIDA MODO PUMICE EXPOLITUM ?}
\dotseparation{CORNELI, TIBI NAMQUE TU SOLEBAS}
\dotseparation{MEAS ESSE ALIQUID PUTARE NUGAS}
\end{stretchpars}
\end{minipage}
\vfill
\null
\end{center}
\end{document}
答案1
像这样?
\documentclass{article}
\usepackage[latin]{babel}
\ExplSyntaxOn
\seq_new:N \l__dotseparation_words_seq
\NewDocumentCommand{\dotseparation}{ m }{
\regex_split:nnN { \s } { #1 } \l__dotseparation_words_seq
\seq_use:Nn \l__dotseparation_words_seq { \char"00B7\hskip0pt }
}
\ExplSyntaxOff
\begin{document}
\dotseparation{SENATUS POPULUSQUE ROMANUS}
\dotseparation{URBS ROMA A COLONIIS CIRCUM VADUM IN FLUMINE TIBERE QUADRIVIUM
COMMERCII MERCATURAEQUE PROFECTA EST.}
\end{document}
Noto Serif 有一个 U+2E31 “WORD SEPARATOR MIDDLE DOT” 的字形,这可能是这里的正确代码点,您还可以添加一些胶水以实现一定的可拉伸性(感谢 barbara beeton):
\documentclass{article}
\usepackage[latin]{babel}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\ExplSyntaxOn
\seq_new:N \l__dotseparation_words_seq
\NewDocumentCommand{\dotseparation}{ m }{
\regex_split:nnN { \s } { #1 } \l__dotseparation_words_seq
\seq_use:Nn \l__dotseparation_words_seq { \hspace{0pt plus .05em} \char"2E31 \hspace{0pt plus .05em} }
}
\ExplSyntaxOff
\newenvironment{stretchpars}
{\par\setlength{\parfillskip}{0pt}}
{\par}
\begin{document}
\dotseparation{SENATUS POPULUSQUE ROMANUS}
\bigskip
\begin{minipage}{6.8cm}
\begin{stretchpars}
\dotseparation{CUI DONO LEPIDUM NOUUM LIBELLUM}
\dotseparation{ARIDA MODO PUMICE EXPOLITUM ?}
\dotseparation{CORNELI, TIBI NAMQUE TU SOLEBAS}
\dotseparation{MEAS ESSE ALIQUID PUTARE NUGAS}
\end{stretchpars}
\end{minipage}
\end{document}