罗马数字间距不够

罗马数字间距不够

我希望数字看起来更像附图中的数字,而不是“III”(三个“I”)。使用 Computer Modern 字体时,是否可以只删除字母之间的水平空格?之前的帖子通过使用 /makebox 定义新命令解决了这个问题,但一些尺寸使用了绝对长度单位,因此对于不同的字体来说这不是一个解决方案,尤其是当您想在下标或上标中使用它时。

在此处输入图片描述

答案1

您可以在两个字符之间插入负空格:

在此处输入图片描述

\documentclass{article}

\newcommand{\joinR}{\hspace{-.1em}}
\newcommand{\RomanI}{I}
\newcommand{\RomanII}{\mbox{\RomanI\joinR\RomanI}}
\newcommand{\RomanIII}{\mbox{\RomanI\joinR\RomanII}}
\newcommand{\RomanIV}{\mbox{\RomanI\joinR\RomanV}}
\newcommand{\RomanV}{V}
\newcommand{\RomanVI}{\mbox{\RomanV\joinR\RomanI}}
\newcommand{\RomanVII}{\mbox{\RomanV\joinR\RomanII}}
\newcommand{\RomanVIII}{\mbox{\RomanV\joinR\RomanIII}}
\newcommand{\RomanIX}{\mbox{\RomanI\joinR\RomanX}}
\newcommand{\RomanX}{X}

\begin{document}

I \RomanI

II \RomanII

III \RomanIII

IV \RomanIV

V \RomanV

VI \RomanVI

VII \RomanVII

VIII \RomanVIII

IX \RomanIX

X \RomanX

\end{document}

以上内容应适用于所有字体开关(\tiny\scriptsize\footnotesize、 ... \Huge)。如果您希望它们靠得更近/更远,您可以根据需要调整间距。


microtypeletterspace软件包还提供了\textls您可以使用的(带星号的版本):

在此处输入图片描述

\documentclass{article}

\usepackage{letterspace}

\newcommand{\ROMAN}{\textls*[-100]}

\begin{document}

I \ROMAN{I}

II \ROMAN{II}

III \ROMAN{III}

IV \ROMAN{IV}

V \ROMAN{V}

VI \ROMAN{VI}

VII \ROMAN{VII}

VIII \ROMAN{VIII}

IX \ROMAN{IX}

X \ROMAN{X}

\end{document}

答案2

下面定义了两个宏。第一个宏将\tighten其参数中每个字母之间的间距减少给定的长度(默认为 0.25ex)。这用于手动插入罗马数字。

第二种是\TightRoman用来\tighten设置带有紧凑罗马数字的计数器。

\documentclass[]{article}

\makeatletter
\newlength\tighten@stretch
\newcommand*\tighten[2][0.25ex]{%
  \if\relax\detokenize{#2}\relax% detect empty argument
  \else
    \bgroup
      \tighten@stretch=#1
      \expandafter\tighten@#2@%
    \egroup
  \fi}
\def\tighten@#1#2{%
  #1%
  \tighten@check{#2}{%
    \kern-\tighten@stretch
    \tighten@#2
  }}
\def\tighten@check#1{%
  \ifx @#1%
    \expandafter\@gobble
  \else
    \expandafter\@firstofone
  \fi}
\newcommand*\TightRoman[2][0.25ex]{%
  \edef\TightRoman@tmp{\Roman{#2}}%
  \expandafter\TightRoman@i\expandafter{\TightRoman@tmp}{#1}}%
\newcommand*\TightRoman@i[2]{%
  \tighten[#2]{#1}}
\makeatother

\begin{document}
\noindent
\newcounter{mycounter}%
\loop\ifnum\value{mycounter}<20
\stepcounter{mycounter}%
\TightRoman{mycounter}\space
\repeat

\tighten{XII}
\end{document}

结果: 在此处输入图片描述

答案3

我认为这篇文章解决了我的问题:扩大字距(= 字母间距)

\usepackage[letterspace=-150]{microtype}

\textls{III}

给出了期望的结果。

相关内容