読者です 読者をやめる 読者になる 読者になる

0番染色体

科学は全世界を照らす光である

アカウント名とアイコンを刷新しました

お知らせ

私が各種サービスで利用するアカウント名とアイコンを新しいものに置き換えました.新アカウント名は wtsnjp(読みは「ワトソン」で結構です),新アイコンは下に示す画像となります.

新アイコン

続きを読む

素数探索はじめました

数学 VPS

筆者が VPS(Virtual Private Server)を利用するようになって,半年以上が経ちました.しかし,個人サイトをホストする他は,ごく稀に実行に時間のかかるプログラムを動かす目的でしか利用していなかったため,利用開始以来の平均 CPU 使用率がほぼ0%といえる状態が続いているのが実情でした.

それではあまりにもったいないということで,先月から GIMPS という素数の探索を目的とする分散コンピューティングプロジェクトに参加し,筆者の利用していない「余った」リソースで,現代科学の発展に貢献しています.

本稿では,まず分散コンピューティングの概念や GIMPS というプロジェクトについて簡単に解説し,その上で VPS を用いて具体的にどのようにすれば GIMPS に参加できるのかという知見を共有したいと思います.

続きを読む

ぼくのかんがえたさいきょうの相互参照 on LaTeX

LaTeX

LaTeX には文書中に出てくる章番号や式・図表の番号など “連番” の登場する箇所に \label 命令でラベリングを行い,これを別の箇所から \ref 命令で参照する相互参照機能が備わっています.これは大変便利な機能で,数式の美しさと並んで「LaTeX のよいところ」としてよく取り上げられます.

しかし,そんな LaTeX の相互参照も使っていると(特に大きな文書を作成する際に)少々面倒さを感じる場面があります.一つは「文書内で一意性のあるラベル名を考えること」です.見出し・式・図表など文書内に登場するあらゆる番号に,何とも被らないラベル名をいちいち考えるのは案外骨が折れます.章ごとに異なる人が執筆を担当しているというような場合にも,ラベル名の衝突を防ぐには何らかの工夫が必要になります.

あるいは複数のラベル箇所を参照したい場合に何度も \ref 命令を並べて書かなければならないケースがあり得ます.式番号に (1) のような括弧をつける書式を利用している場合など,周辺の決まった書式や記号をいちいち入力するのは冗長ですし,それらをベタ打ちしていると,例えば原稿を書き上げてから式番号に括弧を付けない方針に転換した場合などに修正がとても煩雑です.

そこで,LaTeX オリジナルの相互参照機能を拡張して名前空間やスコープといった概念を導入し,さらに参照する番号の種類ごとに書式を柔軟にカスタマイズ可能とするパッケージを作ってみました.

github.com

続きを読む

新しい ShiftIt のご紹介

macOS

今回は できる Mac OS X Advent Calendar 2015 の11日目の記事として投稿しています.昨日は turusuke氏 でした.明日も turusuke氏 の予定です.

Mac 用の画面分割アプリ ShiftIt をご紹介します.と言っても,既に丁寧に解説してくれている記事があります.

qiita.com

新規インストールに必要なことはすべて書かれているので,特に補足すべき新情報はありません.

……じゃあなぜ,こんな記事を書いてるのか? それは新しい ShiftIt の情報に対して古い ShiftIt の情報が多すぎて,前者が埋もれてしまっているからです.それも,記事自体が古いものは仕方ないわけですが,比較的最近書かれた記事であるにもかかわらず古い情報を提供しているアレな記事が複数あることに気付いてしまったので,こうして「新しい情報」を増やす必要があると感じました.

ということで,本稿では最新版の ShiftIt のインストール方法と諸注意,および古いバージョンを用いるとどのような不利益があるのかということについて述べていきたいと思います.

続きを読む

TeXで簡単プログラミング♪

TeX LaTeX

今回は TSG Advent Calendar 2015 の7日目の記事として投稿しています.昨日は SECCON お疲れ様でした.明日は cookies146氏 の予定でした.
なお,本稿は必ずしも プログラミングサークル TSG 関係者向けに書いたというわけではなく,プログラムを書くすべての人を対象にしています.要するに,あらゆるプログラマ向けの TeX on LaTeX の入門記事(のつもり)です.

LaTeX で文書作成をする多くのユーザにはあまり馴染みがないかもしれませんが,TeX はプログラミング言語です.大事なことなので繰り返します.TeX はチューリング完全性を有する関数型プログラミング言語です.

にもかかわらず,実際のところ TeX 言語 *1 を使ってプログラムを書いたことがあるという人はそれほど多くありません.

確かに,TeX はそもそも「プログラムを書くこと」を目的に開発された言語ではなく,また表現能力にも限界があるのでリアルタイムに顔認識をしてメガネをかけるお洒落な人工知能鳴子をインターフェースとする画期的な音ゲーを開発するのに向いているとはとても言いがたいです.

しかし,理系であれば多くの人が文書作成に LaTeX を用いているはずなので,論文やレポート執筆時にするような「ちょっとした計算」であれば,LaTeX の編集画面から移動せずに計算ができるので非常に便利です.あるいは,普通の「文書を書くためのマクロ」であっても,多少の条件分岐やループ構造が使用できる方が,そうでない場合よりもずっと柔軟なものを作成することができます.さらに,「任意言語の課題」を TeX (on LaTeX) で解くと,ほとんどの言語で実装した人に対して「○○での実装は甘え」などと主張することができます(主張出来るだけです.因みに実行時間の話になると,まず勝ち目はありません.).

課題の TeX 実装はさておき,とにもかくにも TeX on LaTeX でちょっとプログラムが書けると何かと便利です.そして,その方法は意外と簡単です.本稿では,そんな TeX on LaTeX の基礎の基礎を解説し,さらに TeX on LaTeX を少しばかり拡張する拙作のパッケージを紹介した上で,いくつかの(ある程度)実用的なマクロを例に実践的な TeX on LaTeX プログラミングを提示することを試みます.

*1:単に “TeX” というと(どういうわけか)LaTeX と勘違いする人がいるので,LaTeX ではない素の TeX,特にプログラミング言語としての TeX を指す場合には “TeX 言語” と表記されることがあります.

続きを読む