プログラミング
どうやら、世間では、ナントカキヨシが流行っているらしい。 ズンドコキヨシまとめ (Qiita) ……アレ? アレレ? LaTeX があるのに、MetaPost がない。 なんてこった……。 嘆いていても仕方がないので、作ってみた。 これを次の手順で実行すると:mpost zundoko…
アレの新版がリリースされた window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter…
window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…
感動したので。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets…
(前回の続き) LISP on TeX (参照:アレ) 「LISP on TeX」という怖そうな*1言語を用いた「フィボナッチなえるたそ」の実装。\documentclass{jsarticle} \usepackage{lisp-on-tex} \newcommand*{\FibEltaso}[3]{\lispinterp{(\fibeltaso :#1 :#2 :#3)}} \n…
長かったナベアツ編はようやく終わった。さて次の課題であるが、「ナベアツ」の次といえば「えるたそ」が来る、というのは TeX 芸人の間では異論のないところであろう。そこで次の命令の実装を目標とする。 \FibEltaso{<正整数a>}{<正整数b>}{<正整数n>} : …
前回で「Grass 言語でナベアツ」を紹介して、これで無事に「ナベアツ編」は完結して次の課題に進める、と考えていたが、やはり一つ心残りなことがある。このブログの愛読者であれば容易に想像が付くと思われるが、それは、 「Brainfuck でナベアツ」をやって…
昨日の記事で BaSiX を紹介したのでちょっと遊んでみる。といっても「TeX への入力」ができないのでナベアツは諦めて FizzBuzz することにする。 まず、CTAN から basix.tex のファイルを入手する。このファイルを現在ディレクトリに置いて「tex basix」を実…
(前回の続き) Grass (bxgrassator パッケージ) (参照:アレ) 「LISP on TeX もいいけど、たまには草を植えてみたい」という人は、bxgrassator パッケージを利用すると、LaTeX 文書で Grass のコードを利用できる。 grassator パッケージバンドル(GitH…
(前回の続き) なんだか「マクロツイーター」っぽくなってきましたね! MetaPost 前回は PostScript を用いてナベアツを実装した。描画言語を利用するというアイデアは有望であるが、しかし残念ながら PostScript ではフォントをアホにすることができなかっ…
(前回の続き) ここからは場外乱闘コーナー。 dvips で PostScript (参照:アレ) DVI ウェアとして dvips を使用する場合、PostScript special 命令を使って比較的自由に PostScript 言語のコードを書くことができる。そして周知の通り、PostScript でナ…
(前回の続き) PythonTeX(pythontex パッケージ) (参照:アレ) PythonTeX は LaTeX 上で Ruby のコードを動作させるためのパッケージである*1。詳しくはリンク先の記事を参照のこと。 [nabeazz-pythontex-ruby.tex]\documentclass[a4paper]{article} \u…
(前回の続き) 今までは「TeX で実装された言語」を扱った。ここからは、既存の言語処理系(またはそのエンジン)と TeX 処理系の連携で動作するものを紹介する。 LuaTeX(+ luacode パッケージ) (参照:アレ) みなさんご存じの LuaTeX。これは TeX 処理…
(前回の続き) LISP on TeX (lisp-on-tex パッケージ) (参照:アレ) 「LISP on TeX」という怖そうな*1パッケージを使うと、LISP 的な言語でプログラミングができる。というわけで早速ナベアツしてみる……。 ……と思ったら、自分の思い通りにはいかないこ…
「LaTeX 上で動く」色々なプログラミング言語を使って実装してみよう、という話。 まずは基本のナベアツから。問題は次の命令を実装すること。 \NabeAzz{}: 1 から n までの整数の 10 進表記を順に空白区切りで出力する。ただし、整数が「3 の倍数である」…
「LISP on TeX」こと lisp-on-tex パッケージ は LaTeX のパッケージであるので、plain TeX 等の「他の TeX フォーマット」では LISP することができない。しかし実際には lisp-on-tex の実装中で LaTeX の機能を用いている箇所は極めて少ない。なので、他の…
(元ネタ? →じゃあ this の抜き打ちテストやるぞー)なんか JavaScript の this は難しいらしいな。でも、\if なんて TeX プログラミングの基礎の基礎の話だから、普段 TeX コードを書いてる人だったら \if はみんなばっちりだよな。じゃあ今から抜き打ちテ…
以前に、TeX で「関数」をどう表現するか(特に「戻り値」をどう扱うか)について解説したことがある。その時に、「関数」として機能するマクロの書き方として次の 3 つを紹介した。 戻り値を受け取る変数をマクロの引数として渡す。 予め「戻り値を受け取る…
【躊躇いなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →18 日目は例のアレ。 →19 日目は@neruko3114 さん「マクロの作り方」です。 こちらは平常運行(ry * * * (前回の続き) \tcln@knumeral の実装の…
【淀みなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →17日目は@egtra さん「LCDF TypetoolsでOpenTypeフォントを使う(DVIPDFMXで)」です。 こちらはいたって平常運行。 * * * (前回の続き) \tcln@zerop…
【疑いなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →14 日目は 例のアレ。 →15 日目は k16.shikano さん「TeX がむかついたので実装したけど挫折してる話」です。 →16 日目は shogo82148 さん「TinySegmen…
【歪みなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →13 日目は @neruko3114 さん「"fp-package" でジャネーの法則」です。 こちらは平常(ry * * * (前回の続き) TeX で「ガウス素数の模様」してみた …
【頼りなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →7 日目は kuroky さん「TUG 2013への参加のすすめ―-世界のTeXユーザが集まる国際会議,初の日本開催」です。 →8 日目は uwabami さん「Ubuntu 12.04/De…
【限りなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →6 日目は peccu さん「= Excelに嫌気がさしてLaTeXで書き直した話」です。 こち(ry * * * 「変換して TeX プログラミング」の例シリーズ。 Lua で「…
【はかなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →3 日目は k16.shikano さん「TeXを電卓として使おう(あるいは、TeXでベキ乗根)」です。 →4 日目は @neruko3114 さん「Numerical Calculation Package…
【よしなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →3 日目は k16.shikano さん「TeXを電卓として使おう(あるいは、TeXでベキ乗根)」です。 こちらは平常運行。 * * * 前回に引き続いて「変換して TeX …
【よしなく宣伝】 2012/12/01 〜 2012/12/25 TeX & LaTeX Advent Calendar 〜TeX で騒げ、TeX で笑え〜 →2 日目は hak7a3 さん「アドベントカレンダー二日目 ― \newif\ifnextyear \ifnextyeartrue」(\aftergroup な話)です。 こちらは平常運航。 * * * 以…
あるいは 〜私の TeX プログラム変換環境〜【ゆえなく宣伝】TeX & LaTeX Advent Calendar群馬は TeX になりました。日本は TeX になりました。明日開始、できればいいなあ。(詳細は ATND のページで)TeX プログラムできたよ非常に長い道のりであったが、…
あるいは 〜私の TeX プログラム変換環境〜 \tclt@remainder 「余りを求める」ことについては、このブログでも何度か題材に取り上げていて、例えば、「TeX で何か関数のようなものを」のシリーズでも扱われている。今回の作業では、関数を「変数 ires に戻り…
あるいは 〜私の TeX プログラム変換環境〜 前回の続き。 50〜59行目: 手続き eltaso() [BEFORE]function eltaso(_1) max = _1 if max > 9999 then max = 9999 end j = 0 while j < max do j = j + 1 eltaso_name(j) print(sres) end end [AFTER]%%(公開) \e…