Skip to content

Instantly share code, notes, and snippets.

@dginev
Created June 21, 2018 15:38
Show Gist options
  • Save dginev/535b60e6ed9be937b5e3485a1efe8cac to your computer and use it in GitHub Desktop.
Save dginev/535b60e6ed9be937b5e3485a1efe8cac to your computer and use it in GitHub Desktop.
An etoolbox-inspired way of printing 1995 (latexml deficient)
\documentclass{article}
\makeatletter
\newcommand{\ifblank}[1]{% from expl3
\expandafter\ifx\expandafter\relax\detokenize\expandafter{\@gobble#1?}\relax
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}
\def\etb@rti@prs#1#2{%
\ifx&#1%
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{#1#2}
{\ifx&#2%
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\etb@rti@chk#1+\etb@rti@num#1#2}
{\etb@rti@chk#1\etb@rti@chk#2%
\ifnum\etb@rti@num#1<\etb@rti@num#2 %
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{+\etb@rti@num#2-\etb@rti@num#1\etb@rti@prs}
{+\etb@rti@num#1\etb@rti@prs#2}}}}
\def\etb@rti@chk#1{%
\ifcsname etb@rmn@#1\endcsname
\else
\expandafter\etb@rti@brk
\fi}
\def\etb@rti@brk#1&{+\z@&-1}
\def\etb@rti@end#1&#2\relax{\ifblank{#2}{#1}{#2}}
\def\etb@rti@num#1{\csname etb@rmn@#1\endcsname}
\chardef\etb@rmn@i=1
\chardef\etb@rmn@I=1
\chardef\etb@rmn@v=5
\chardef\etb@rmn@V=5
\chardef\etb@rmn@x=10
\chardef\etb@rmn@X=10
\chardef\etb@rmn@l=50
\chardef\etb@rmn@L=50
\chardef\etb@rmn@c=100
\chardef\etb@rmn@C=100
\mathchardef\etb@rmn@d=500
\mathchardef\etb@rmn@D=500
\mathchardef\etb@rmn@m=1000
\mathchardef\etb@rmn@M=1000
\begin{document}
% --- example
\expandafter\etb@rti@end\number\numexpr\expandafter\etb@rti@prs\detokenize{mcmxcv}&\relax
\end{document}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment