Skip to content

Instantly share code, notes, and snippets.

@zr-tex8r
Last active January 2, 2026 06:25
Show Gist options
  • Select an option

  • Save zr-tex8r/4ea1e0e9d30c24a1bafaffd0d9fe09d9 to your computer and use it in GitHub Desktop.

Select an option

Save zr-tex8r/4ea1e0e9d30c24a1bafaffd0d9fe09d9 to your computer and use it in GitHub Desktop.
NabeAzzTeX: NabeAzz専用のTeXマクロパッケージ

NabeAzzTeX

TeX: NabeAzz専用のTeXマクロパッケージ

前提仕様

  • TeXエンジン: 不問
    ※以下の説明では元祖TeX(Knuthian TeX)を前提とする。

フォーマット作成方法

以下のコマンドによりnabeazztex.fmtが作成される。

tex -ini nabeazz

実行方法

入力ファイル(main.texとする)として、整数値(十進表記)1つだけが書かれたファイルを用意する。

40

フォーマットファイルnabeazztex.fmtが見える状態で以下のコマンドを実行することでNabeAzzTeXを実行できる。

tex -fmt=nabeazztex main.tex

これにより「1から“ファイルに書かれたの整数値”までのナベアツ」の出力がA5判縦置のレイアウトで記載されたDVIファイルmain.dviが出力される。

入力の整数値をファイルでなくコマンド行で与えることも可能であるが、 現在のTeXの仕様では「40のように英数字から始まる引数はファイル名と解釈されてしまう」という問題がある。 この問題を回避するために、NabeAzzTeXでは「空に展開されるマクロ」として\\を用意している。 これを利用して次のコマンド行)で実行できる。
※ただしコマンドシェル用のエスケープを適宜適用する必要がある。

tex -fmt=nabeazztex \\40

ライセンス

MITライセンスが適用される。


Takayuki YATO (aka. "ZR")
https://github.com/zr-tex8r

%% This is file 'nabeazztex.tex'.
%% Copyright (c) 2025 Takayuki YATO (aka. "ZR")
%% This package is distributed under the MIT License.
% レイアウト設定
\hsize=97mm \vsize=159mm
\hbadness=1000 \vbadness=1000
\baselineskip=15pt
\parfillskip=0pt plus 1fil
\begingroup
% コード設定
\catcode`\{=1 \catcode`\}=2
\catcode`\#=6 \catcode`\@=11
% フォント設定
\global\font\NA@normal=cmr10
\global\font\NA@aho=cmfi10 at 12pt
% 変数定義
\global\countdef\NA@limit=100
\global\countdef\NA@cnta =101
\global\countdef\NA@cntb =102
%% \NA@main
% 1から \NA@limit までナベアツを出力した後ジョブを終了する.
\gdef\NA@main{%
\NA@normal % フォント設定
% ナベアツする
\par % 改段落
\NA@cnta=1
\NA@loop
% ジョブを終了する
\par \end
}
%% \NA@loop
% ナベアツのループ処理.
\gdef\NA@loop{%
% 整数がアホかを判定する
\chardef\NA@isaho=0
\NA@cntb=\NA@cnta
\divide\NA@cntb 3 \multiply\NA@cntb 3
\ifnum\NA@cnta=\NA@cntb
\chardef\NA@isaho=1
\fi
\expandafter\NA@has@three\the\NA@cnta3\relax
% 整数を出力する
\ifnum\NA@isaho=1
{\NA@aho \the\NA@cnta}%
\else
\the\NA@cnta
\fi
\ % 区切りの空白
% 末尾再帰
\ifnum\NA@cnta<\NA@limit
\advance\NA@cnta1
\expandafter\NA@loop
\fi
}
%% \NA@has@three
% 文字列が3を含むかの判定の補助マクロ.
\gdef\NA@has@three#13#2\relax{%
\ifx!#2!\else
\chardef\NA@isaho=1
\fi
}
%% '\\'が無視されるようにする
\gdef\\{}
% ジョブ開始時に自動実行される処理
\global\everyjob{%
% 数字を読み取って \NA@main を呼ぶ
\afterassignment \NA@main
\NA@limit=%
}
\endgroup
% おしまい
\dump
%% EOF
@zr-tex8r
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment