マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

1TeX のソースを LaTeX 文書に掲載する画期的な方法(tc1verbatim パッケージ)

といっても、これで何事もなく終わってしまうと、“某きりたんぽ的 TeX フォーマット”の熱狂的なファンが嘆き悲しむことになるだろう。なので、軽いネタを出しておく。

1TeX の抱える重大な問題

周知のとおり、1TeX は極めて画期的なフォーマットである。しかし「文書ソースを“1”だけで表す」という性質は文字種の削減にとっては肝要であるものの、一方で次のような問題の原因ともなっている。

  • ソースの行が必然的に長くなるため、ソースを掲載する場合の支障になる。
  • “1”の個数を判別するのが難しい。

例えば、画期的な 1TeX の普及を企図して解説文書を LaTeX で作ろうと、折角思い立っても、肝心の 1TeX のソースがまともに掲載できないのである。

もちろん、フォントサイズを小さくすれば所定の幅に収めることはできるのは確かだが、そうするとますます判読が困難になるだろう。1TeX の普及を考える上で、ソースの組版は避けて通れない問題であるのは間違いない。

画期的な新記法

この問題を解決するために、「“1”の羅列を表現する」ための画期的な新記法を考案した。

“1”を塊として配置することで必要な横幅を大幅に圧縮し、さらに、5 個・10 個の単位の区切りが明確になることで判別が容易になる。つまり前述の問題点の両方が一度に解消できるわけである。

画期的なパッケージ

この画期的なアイデアを実用に移すべく、パッケージを作ってみた。

このパッケージは LaTeX 標準(tools バンドル)の verbatim パッケージに対する拡張となっていて、以下の機能を提供する。

  • oneverbatim 環境
  • oneverbatim* 環境
  • \oneverbatiminput 命令
  • \oneverbatiminput* 命令

oneverbatim 環境は verbatim 環境の変種で、“1”の羅列の部分を新記法で出力する。その他も同様で、verbatim パッケージの機能の“新記法対応版”となっている。

例えば、「1TeX」と出力する 1TeX のコード(の断片*1)を書いたファイルがあるとする。

[sample.1tex]
1111111111111111111111111111111111111111111111111
111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

このファイルの内容を LaTeX 文書中に \verbatiminput{sample.1tex} で取り込むと、以下のような残念な出力になる。

一方で、\oneverbatiminput{sample.1tex} で取り込むと、以下のような素敵な出力になる。

というわけで、画期的な 1TeX を普及させる妨げとなっていた要員は画期的に解決されるに至った。1TeX の更なる普及と発展を期待して、この記事を締め括りたい。


おまけ

1TeX の「1 を羅列する」というアイデア自然数の記法の一種である「1 進数記法」(tally 記法)に由来する。それならば、当然の帰結として、先述の“1TeX ソースの記法”も自然数の画期的な新記法と見なすことができる。となると、それを LaTeX の文書で使ってみたいと思うのは自然な要求であろう。従って、tc1verbatim では与えられた自然数を新記法で出力するための命令も用意している。

  • \onetallyof{<整数>}: 引数の整数を新記法で出力する。
  • \onetally{<カウンタ>}LaTeX カウンタの値を新記法で出力する。
\documentclass[uplatex,a4paper]{jsarticle}
\usepackage{type1cm}% CMフォントの場合必要
\usepackage{bxtexlogo}
\bxtexlogoimport{*,SuyahTeX,OneTeX}
% 画期的新記法
\usepackage{tc1verbatim}
\renewcommand{\theenumi}{\onetally{enumi}}
\begin{document}

著名な{\TeX}のフォーマットは以下のものがある。
\begin{enumerate}
\item \LaTeX
\item plain \TeX
\item \ConTeXt
\item Lollipop
\item \SuyahTeX \label{itm:suyah}
\item \OneTeX \label{itm:one}
\end{enumerate}
特に\ref{itm:suyah}\ref{itm:one}は重要である。

\end{document}

LaTeX 文書の作製の際に、箇条番号の表記にもっと魅力的な方法がないかと思い悩んでいる人は、是非とも \onetally を試していただきたい。

*1:これは断片なので単独では 1tex でコンパイルできない。