窄列中的自动字母间距

窄列中的自动字母间距

是否有可能自动拉伸窄列中的字母间距以获得像中间那样完全对齐的文本?下图来自 soul 包手册。

字母间距

这是我的工作示例:

\documentclass[9pt,draft]{extarticle}

\usepackage[twoside,a5paper,top=16mm,inner=10mm,outer=10mm,bottom=16mm]{geometry}

\usepackage{fontspec}
    \setmainfont[Ligatures=TeX]{PT Serif}
    \newfontfamily\normalni{PT Sans}%[ItalicFont={Source Sans Pro Italic}]

\usepackage{polyglossia}
    \setmainlanguage{czech}
    \setotherlanguages{bulgarian,polish}

\usepackage[final]{microtype}
  \SetProtrusion
     [ load = default,    % Dědíme veškerá nastavení od `default`.
       factor   = 2000 ]      % Zdvojnásobení zděděných hodnot.
     { family   = {*},
       encoding = {EU1,EU2} } % Experimental Unicode: „kódování“ OpenType fontů.
     { . = {500,500} }

\usepackage[all]{nowidow}
\usepackage{setspace}
    \setstretch{1.1}
\usepackage{paracol}



\sloppy
\begin{document}
\begin{paracol}{3}

\switchcolumn[0]
\begin{description}\textbulgarian{\item{\bfseries{}АБСТРАКТНО СЪЩЕСТВИТЕЛНО (отвлечено съществително)}
{\small{}Съществително име, което назовава идеи, абстрактни понятия или нематериални неща напр. \textit{свобода}, \textit{справедливост} и~т.\,н.}}\end{description}


\vspace{2\baselineskip}\switchcolumn[1]
\begin{description}\textczech{\item{\bfseries{}ABSTRAKTUM (abstraktní podstatné jméno)}
{\small{}Substantivum postrádající denotát fyzické povahy. Abstrakta označují vlastnosti (\textit{lenost}, \textit{krása}), děje (\textit{běh}, \textit{plavání}), stavy (\textit{bdění}, \textit{spánek}) nebo propozice (\textit{podmínka}, \textit{okolnost}) jako třídy „objektů“, tj. jako něco, k~čemu lze referovat buď jako ke třídě, nebo k~prvku/prvkům třídy.}}\end{description}


\vspace{2\baselineskip}\switchcolumn[2]
\begin{description}\textpolish{\item{\bfseries{}RZECZOWNIK ABSTRAKCYJNY}
{\small{}Rzeczownik, którego znaczenia nie można ogarnąć podstawowymi zmysłami.}}\end{description}

\end{paracol}
\end{document}

答案1

变量 letterspacing 的命令在包的文档中定义soul( \magstylepar)。

但请注意标题中给出的警告!为了让结果更令人满意,我还microtype为所有字体激活了字体扩展,这可以减少字母之间的拉伸量。

还要注意的是,soul它非常脆弱,所以在更复杂的情况下可能会失败。

\documentclass[9pt,draft]{extarticle}

\usepackage[twoside,a5paper,top=16mm,inner=10mm,outer=10mm,bottom=16mm]{geometry}

\usepackage{fontspec}
  \setmainfont[Ligatures=TeX]{PT Serif}
  \newfontfamily\normalni{PT Sans}%[ItalicFont={Source Sans Pro Italic}]
  \newfontfamily\cyrillicfont[Ligatures=TeX]{PT Serif} %% added to get rid of the polyglossia error

\usepackage{polyglossia}
  \setmainlanguage{czech}
  \setotherlanguages{bulgarian,polish}

\usepackage[final]{microtype}
\microtypesetup{expansion=all} %% This helps a lot!
%  \SetProtrusion   %% settings removed as they don't make any sense
%     [ load = default,    % Dědíme veškerá nastavení od `default`.
%       factor   = 2000 ]      % Zdvojnásobení zděděných hodnot.
%     { family   = {*},
%       encoding = {EU1,EU2} } % Experimental Unicode: „kódování“ OpenType fontů.
%     { . = {500,500} }

\usepackage[all]{nowidow}
\usepackage{setspace}
    \setstretch{1.1}
\usepackage{paracol}

\usepackage{soulutf8}
\makeatletter
\DeclareRobustCommand*\magstylepar{\SOUL@sosetup
   \def\SOUL@preamble{%
     \edef\SOUL@soletterskip{\z@\@plus.25\fontdimen2\font\@minus\z@}%
     \edef\SOUL@soinnerskip{\the\fontdimen2\font
       \@plus\the\fontdimen3\font\@minus\the\fontdimen4\font}%
     \let\SOUL@soouterskip\SOUL@soinnerskip
     \SOUL@sopreamble}%
   \lefthyphenmin2\righthyphenmin2\SOUL@}
\font\SOUL@tt="CMU Typewriter Text Regular"
\setbox\z@\hbox{\SOUL@tt-}
\SOUL@ttwidth\wd\z@
\makeatother

\sloppy
\begin{document}

\begin{paracol}{3}

\switchcolumn[0]
\begin{description}\textbulgarian{\item{\bfseries{}АБСТРАКТНО СЪЩЕСТВИТЕЛНО (отвлечено съществително)}
\magstylepar{\small{}Съществително име, което назовава идеи, абстрактни понятия или нематериални неща напр. \textit{свобода}, \textit{справедливост} и~т.\,н.}}\end{description}

\vspace{2\baselineskip}\switchcolumn[1]
\begin{description}\textczech{\item{\bfseries{}ABSTRAKTUM (abstraktní podstatné jméno)}
\magstylepar{\small{}Substantivum postrádající denotát fyzické povahy. Abstrakta označují vlastnosti (\textit{lenost}, \textit{krása}), děje (\textit{běh}, \textit{plavání}), stavy (\textit{bdění}, \textit{spánek}) nebo propozice (\textit{podmínka}, \textit{okolnost}) jako třídy „objektů“, tj. jako něco, k~čemu lze referovat buď jako ke třídě, nebo k~prvku/prvkům třídy.}}\end{description}

\vspace{2\baselineskip}\switchcolumn[2]
\begin{description}\textpolish{\item{\bfseries{}RZECZOWNIK ABSTRAKCYJNY}
\magstylepar{\small{}Rzeczownik, którego znaczenia nie można ogarnąć podstawowymi zmysłami.}}\end{description}

\end{paracol}
\end{document}

输出

相关内容