Instead of 'III' (three 'I's), I want the numbers to look more like those in the attached image. When using Computer Modern font, is it possible to just remove the horizontal space between letters? a previous post worked around this by defining a new command using /makebox, but some of the dimensions used absolute length units and therefore is not a solution for different fonts, especially when you want to use this in subscripts or superscripts.
Asked
Active
Viewed 1,006 times
2
-
1Which font are you using? – Sigur Jan 31 '18 at 19:05
-
To get that sort of effect easily, you will need a typeface that has roman numerals correctly spaced. The only freely available typeface that has them (that I know of though there may well be others) is the Brill typeface available at http://www.brill.com/about/brill-typeface/brill-fonts-end-user-license-agreement. – sgmoye Jan 31 '18 at 20:01
-
the font you show is a "condensed" font -- letters are much narrower than the usual "book" type. even applying negative letterspacing, the result will not be quite comparable to what you are showing here. – barbara beeton Jan 31 '18 at 21:42
3 Answers
2
The following defines two macros. The first is \tighten which reduces the
space between every letter of its argument by a given length (by default
0.25ex). This is intended for manual insertion of roman numerals.
The second is \TightRoman which uses \tighten to set a counter with
tightened Roman numbers.
\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}
Skillmon
- 60,462
1
You can insert a negative space between two characters:
\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}
The above should work with all font switches (\tiny, \scriptsize, \footnotesize, ..., \Huge). You can adjust the spacing as needed, if you want them closer together/further apart.
microtype's letterspace package also provides \textls that you can use (the starred version):
\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}
Werner
- 603,163
1
I think this post solved my problem: Enlarging tracking (= letter spacing)
\usepackage[letterspace=-150]{microtype}
\textls{III}
gives the desired results.



