%% %% This is file `romanbar.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% romanbar.dtx (with options: `package') %% %% This is a generated file. %% %% Project: romanbar %% Version: 2012/01/01 v1.0f %% %% Copyright (C) 2011 by %% H.-Martin M"unch %% %% The usual disclaimer applies: %% If it doesn't work right that's your problem. %% (Nevertheless, send an e-mail to the maintainer %% when you find an error in this package.) %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.3c of this license or (at your option) any later %% version. This version of this license is in %% http://www.latex-project.org/lppl/lppl-1-3c.txt %% and the latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% The Current Maintainer of this work is H.-Martin Muench. %% %% This work consists of the main source file romanbar.dtx, %% the README, and the derived files %% romanbar.sty, romanbar.pdf, %% romanbar.ins, romanbar.drv, %% romanbar-example.tex, romanbar-example.pdf. %% \NeedsTeXFormat{LaTeX2e}[2011/06/27] \ProvidesPackage{romanbar}[2012/01/01 v1.0f Roman numbers with bars (HMM)] %% Allows to write Roman numbers (or any other text) with bars %% and to convert Arabic numbers into Roman ones. %% romanbar may work with earlier versions of LaTeX, %% but this was not tested. Please consider updating %% your LaTeX to the most recent version %% (if it is not already the most recent version). \def\gobbleminus#1{\ifx-#1\else#1\fi} %% from http://www.tex.ac.uk/cgi-bin/texfaq2html?label=isitanum \newcommand{\ifnumeric}[3]{% %% similar to http://tex.stackexchange.com/a/17119 \sbox\z@{\@tempcnta=0\gobbleminus#1\relax}% \ifdim\wd0>\z@\relax#3% is not numeric \else#2% is numeric \fi% } \def\r@iseL#1{\ifx @#1% then terminate \else% \if L#1\raisebox{0.05ex}{L}\else #1\fi% \expandafter\r@iseL% \fi% } \DeclareRobustCommand{\Romanbar}[1]{% \ifnumeric{#1}{% is numeric \@tempcnta=#1\relax% %% similar to \XRoman from the http://ctan.org/pkg/pageslts package \ifnum\@tempcnta<1% \ifnum #1>0% \relax \Roman@bar{\Roman{#1}}% \else% \ifnum #1<0% -\Roman@bar{\expandafter\@slowromancap\romannumeral\number-#1@% }% \else% \Roman@bar{0}% \fi% \fi% \else\Roman@bar{\@Roman\@tempcnta}% \fi% }{% is not numeric \Roman@bar{#1}% }% } \DeclareRobustCommand{\Roman@bar}[1]{% #1 is in Roman, i.e. MMXII %% (or any other text, "Caesar" would work, too). %% similar to code of by Prof. Enrico Gregorio (egreg) at %% http://tex.stackexchange.com/questions/24065/roman-numerals-formatting/24084#24084 \@bsphack% \edef\romanbartmp{#1}% %% height: \sbox0{\textsf{\romanbartmp}}% %% top line: %% + top of top line: \@tempdima=\ht0% \advance\@tempdima+0.05ex%0.03 \dimen1=\@tempdima% %% + bottom of top line: \@tempdima=-\ht0% \advance\@tempdima+0.05ex%0.07 \dimen2=\@tempdima% %% width: \sbox0{\textsf{\expandafter\r@iseL\romanbartmp @}}% \@tempdima=\wd0% \advance\@tempdima+1pt% \dimen0=\@tempdima% \@esphack% \makebox[\dimen0]{% \rlap{\vrule width\dimen0 height\dimen1 depth\dimen2}% top line \rlap{\vrule width\dimen0 height 0.06ex depth 0.03ex}% bottom line \kern0.5pt\textsf{\expandafter\r@iseL\romanbartmp @}\kern0.5pt}% } \DeclareRobustCommand{\romannum}[1]{% \ifnumeric{#1}{% is numeric \@tempcnta=#1\relax% %% similar to \xroman from the http://ctan.org/pkg/pageslts package \ifnum\@tempcnta<1% \ifnum #1>0% \relax \roman{#1}% \else% \ifnum #1<0% -\romannumeral\number-#1@% \else% 0% \fi% \fi% \else\@roman\@tempcnta% \fi% }{% is not numeric \PackageError{romanbar}{% Argument of \string\romannum\space is not a number}{% The command \string\romannum\space converts an Arabic number into a% lower-case Roman one,\MessageBreak% but the used argument of \string\romannum\space is not an Arabic number% but\MessageBreak% `#1`,\MessageBreak% which will now be printed unchanged.}% #1% }% } \DeclareRobustCommand{\Romannum}[1]{% \ifnumeric{#1}{% is numeric \@tempcnta=#1\relax% %% similar to \XRoman from the http://ctan.org/pkg/pageslts package \ifnum\@tempcnta<1% \ifnum #1>0% \relax \Roman{#1}% \else% \ifnum #1<0% -\expandafter\@slowromancap\romannumeral\number-#1@% \else% 0% \fi% \fi% \else\@Roman\@tempcnta% \fi% }{% is not numeric \PackageError{romanbar}{% Argument of \string\Romannum\space is not a number}{% The command \string\Romannum\space converts an Arabic number into an% upper-case Roman one,\MessageBreak% but the used argument of \string\Romannum\space is not an Arabic number% but\MessageBreak% `#1`.}% #1% }% } \endinput %% %% End of file `romanbar.sty'.