Top Pageに戻る。


どわすれメモ

すぐに忘れる Mathematica や LaTeX の細かいテクニックや、 UNIXコマンドのオプションなんかをまとめておきます。

目次

Mathematicaのおぼえがき

Mathematica(のおそらくVer.3以降)で使える技です。

ノートブックのキーバインドをEmacsっぽくする

キーバインドを変えるには KeyEventTranslations.trMenuSetup.tr という2つの設定ファイル(テキストファイル)を編集すればよい。 以下では Windows用Mathematica9.0日本語版 をデフォルトのままインストールした場合の フォルダ構成で説明しています。

まず、 C:\Program Files\Wolfram Research\Mathematica\9.0\SystemFiles\FrontEnd\TextResources\Windows\KeyEventTranslations.trにキーバインドを定義します。 EventTranslations[{ という記述の後に以下の赤字のような Ctrl-p や Ctrl-n の定義を追記すればOKです。 さらに、デフォルトの Ctrl-w の動作(ウィンドウを閉じる)をコメントアウトします。 なお、Ctrl-k はうまく実装できなかったので、「カーソルから行末までを選択する」動作としました。 Ctrl-k の後に Ctrl-w を押すことで「行末までカット」ができます。

EventTranslations[{

(* Emacs-like keybindings *)
	Item[KeyEvent["p", Modifiers -> {Control}], "MovePreviousLine"], 
	Item[KeyEvent["n", Modifiers -> {Control}], "MoveNextLine"], 
	Item[KeyEvent["b", Modifiers -> {Control}], "MovePrevious"], 
	Item[KeyEvent["f", Modifiers -> {Control}], "MoveNext"], 
	Item[KeyEvent["e", Modifiers -> {Control}], "MoveLineEnd"], 
	Item[KeyEvent["a", Modifiers -> {Control}], "MoveLineBeginning"], 
	Item[KeyEvent["u", Modifiers -> {Control}], "ScrollPageUp"],
	Item[KeyEvent["v", Modifiers -> {Control}], "ScrollPageDown"],
	Item[KeyEvent["h", Modifiers -> {Control}], "DeletePrevious"], 
	Item[KeyEvent["d", Modifiers -> {Control}], "DeleteNext"], 
	Item[KeyEvent["w", Modifiers -> {Control}], "Cut"], 
	Item[KeyEvent["k", Modifiers -> {Control}], "SelectLineEnd"], 


(* Evaluation *)
	Item[KeyEvent["Enter"], "EvaluateCells"],
	... 

(* Notebook window control *)
	...
(*	Item[KeyEvent["w", Modifiers -> {Control}], "Close"], *)
	...

次に、 C:\Program Files\Wolfram Research\Mathematica\9.0\SystemFiles\FrontEnd\TextResources\Japanese\Windows\MenuSetup.trで、新たに定義したキーバインドとコンフリクトするデフォルトの キーバインドの設定を消去します。たとえば以下の例では、 Ctrl-n で「新規作成」にならないようにしています。

MenuItem["\:30ce\:30fc\:30c8\:30d6\:30c3\:30af (.nb) (&N)", "New"(*, MenuKey["n", Modifiers->{"Control"}] *)],

また、Ctrl-s で検索するためには、「保存」の設定を消去して、さらに検索の設定(下の例では省略していますが、FrontEnd`DialogOpen["Find.nb", True]が含まれる行)に Ctrl-s の設定を追加します。

MenuItem["\:4fdd\:5b58 (&S)", "Save"(*, MenuKey["s", Modifiers->{"Control"}] *)],
...
MenuItem["\:691c\:7d22... (&F)", KernelExecute[...], MenuEvaluator -> "System", MenuKey["s", Modifiers->{"Control"}]],

なお、メニューを英語に設定している場合は、 KeyEventTranslations.tr と同じフォルダにある MenuSetup.tr を編集すれば良いはずです。

私の使っている MenuSetup.trKeyEventTranslations.tr を 置いておきます。ほぼ Emacs仕様です。ただし、Ctrl-s は保存のままです。また、Ctrl-SPACE や Ctrl-l は動作しません。

色つきPrint, 太字Print


In[1]:=Print[1,StyleForm[2,FontColor->RGBColor[1,0,0]],3];

      123

In[2]:=Print["a=",StyleForm[3,FontWeight->"Bold"]," dayo."];

      a=3 dayo.

矢印を描く

GraphicsパッケージのArrow.mを使えばよい。

    Needs["Graphics`Arrow`"];
    kaze=Table[Random[Real,{-2,2}],{24},{2}];
    zure=1;
    Show[Graphics[
        Table[
            Arrow[{i*zure, 0}, {i*zure,0}+kaze[[i+1]],
            HeadScaling -> Relative],
            {i,0,Length[kaze]-1}]
            ],PlotRange -> All,AspectRatio->Automatic,Axes->{True,False},
        AxesLabel->{time,None}];

変数の記憶を忘れてもらう

一度変数を使うと、それらは継続しているセッションの間はMathematicaに 記憶されます。 (グローバル)変数を一括して初期化(何も代入されていない状態)するには、

    ClearAll["Global`*"];

すべての変数を実数と想定しているときの複素共役

Conjugate[x+I*y] としても Conjugate[x+I*y] としか返してくれない。 Conjugate[3+I*y] としても 3-I*Conjugate[y] としか返してくれない。 x や y は実数とは限っていないのだから当然の結果。 x や y を実数としてしか扱わないときは、各々 x-I*y, 3-I*y と 返してほしい。そんなときは MyConjugate[x+I*y] で解決。


In[1]:=Conjugate[x+I*y]

Out[1]=Conjugate[x+I*y]

In[2]:=MyConjugate[x_] := x /. {Complex[a_, b_] :> Complex[a, -b]};

In[3]:=MyConjugate[x+I*y]

Out[3]=x-I*y

Version3と4の文法上の違い

文法チェックがうるさくなった。 たとえば、

    a={4,};

と書いたファイルを Version4 のノートブック上で読み込む( Get[filename] )と、

Syntax::"com": "Warning: comma encountered with no adjacent expression; the expression will be treated as Null.

と怒られる。 Null を明示しろってことなので、a={4,Null}; と書いておけば怒られない。 また、ノートブックに直接 a={4,}; と書いて実行する分には Warning は出ない。

LaTeXのおぼえがき

LaTeX2eで使える小技です。

引用数字を右肩にのせる

overciteというパッケージ使ったらいい。 パッケージがなければ、ここを見て、 インストールしましょう。

    \usepackage{overcite}

テーブル番号をローマ数字にする

    \makeatletter
    \renewcommand\thetable{\@Roman\c@table}
    \makeatother

ダブルスペースにする

\bein{document}の後で、

    \setlength{\baselineskip}{20pt}

式のラベルを表示する。

    \usepackage{showkeys}

数式番号をローマ数字にする。

    \renewcommand\theequation{\roman{equation}}

数式番号を章ごとにリセットする

amsmath パッケージを使えば簡単。

    \usepackage{amsmath}
    \numberwithin{equation}{section}

ページ番号を表示しない

ヘッダーに

    \pagestyle{empty}
と書けばいい。こう書いても、表紙のあるページにページ番号が出るときは、 \maketitle の直後に
    \thispagestyle{empty}

と書く。

丸付き数字を簡単に書く

pifont というパッケージを使って、以下のようにすればよい。

\documentclass{article}
\usepackage{pifont}
\begin{document}
白1,2,3 -- \ding{"C0},\ding{"C1},\ding{"C2}
黒1,2,3 -- \ding{"CA},\ding{"CB},\ding{"CC}
\end{document}

番号の対応を考えるのが面倒なので、

などとすれば丸付き数字を表示できるようにもできます。 LaTeX のソースファイルの例そのdvi ファイルを参照してください。

数式環境じゃなくても数式環境になるマクロ

たとえば、記号λを数式環境じゃない場所で表示させるためには $\lambda$ とわざわざ $ で囲んで数式環境にしてやらなくてはいけないが、 次のようなマクロでは、数式環境でないところでは数式環境として、 数式環境ならもちろん数式環境として扱ってくれる。

    \newcommand{\la}{\ensuremath{\lambda}}

表の列幅をそろえる

表の各列を同じ幅にそろえるには、makebox を使って 幅を指定してやればよい。

    \begin{tabular}{|r|r|r|}
    \makebox[80pt][r]{1} & \makebox[80pt][r]{22} & \makebox[80pt][r]{333}\\
    11 & 2222 & 333333 
    \end{tabular}

スタイルファイルをインストールしたのに見つけてくれない

たとえば上で紹介したovercite.sty は、 /pub/teX/CTAN/macros/latex/contrib/citeという名前のディレクトリにありました。

拾ってきたら、 /usr/share/texmf/tex/latex/packages/ っぽい名前の下のディレクトリに置きます。 ただし設定によっては、ここに置いただけでは tex がスタイルファイルを認識しないことがあります。 その場合はコマンドライン(Windowsならば、「スタート→アクセサリ→コマンドプロンプト」)で、

mktexlsr
と打ちます。

Beamer のインストール

Beamerクラスを使うと、LaTeXで きれいなプレゼンテーション資料を 作ることができます。

いくつかの日本語のwebページを参考にインストールしたのですが、 古いパッケージにリンクされていたためインストールしてもうまく動作せず はまりました。というわけで、最新版を探してインストールすることが大切です。 インストールに必要なファイルの現時点(31/Oct/2011)での最新版(であろう) のリンク先とインストール方法を記録しておきます:

なお、thebibliography環境を使うと以下のようなエラーが出ました。

! LaTeX Error: File `beamericonarticle.bb' not found.
C:\ptex\share\texmf\tex\latex\beamer\base\artというような 名前のフォルダにおいて、
コマンドラインで以下のようにして必要なファイル (beamericonarticle.bbなど)を生成しましょう。
ebb *.pdf

bbding のインストール

bbdingパッケージが あると、さまざまな記号をLaTeXで使えるようになります。 記号のためのフォントが必要なので、インストールが少し面倒です:

なお bbding.styで作ったpdfファイルを gs7.07+GSview4.9で閲覧するとエラーが出て表示に失敗しましたが、 gs9.04+GSview4.9にすると表示できるようになりました。

UNIXコマンドのおぼえがき

わけわからなくなる vi の使い方

終了させる方法がわからなくて、 Ctrl-Z や Ctrl-C を押してみても効かなくて泣きたくなるのが vi。 終了の方法は以下の2通りを覚えればよい。
変更した内容を保存せずに終了したいときは、 Escを押してから、:q!と押す。
変更した内容を保存してから終了したいときは、 Escを押してから、ZZと押す。大文字。

vi は、コマンドモードと書き込みモードのいずれかのモードにある。 Escキーでコマンドモードになる。 a,i,o,Oのどれかで書き込みモードになる。
コマンドモードのキー:
h → 左、 j → 上、 k → 下、 l → 右。
a → 書き込みモードになる。カーソル位置の後に書き込み。
i → 書き込みモードになる。カーソル位置の前に書き込み。
o → 書き込みモードになる。カーソル位置の次の行に空行作ってそこに書き込み。
O → 書き込みモードになる。カーソル位置の上の行に空行作ってそこに書き込み。
x → カーソルの位置にある1文字を削除。
dd → カーソルのある行を削除。
yy → カーソルの位置にある1文字をコピー。
p → カーソル位置の後にペースト。
:w → 保存。
:w nantoka.txt → nantoka.txtという名前のファイルに保存。

tar ファイルの作り方

たとえば、カレントディレクトリのファイルをすべて、 ../mydata.tgz にまとめるやり方は、

    % tar -zcvf ../mydata.tgz .

z が「gz 圧縮」、cが「まとめてください」、 v が「やかましい」というオプションスイッチ。 逆に解凍するときは、

    % tar -zxvf mydata.tgz

x が「解凍してください」オプションスイッチ。

オプションがうっとおしい find

たとえば、/usr/local 以下のディレクトリにある *.sty というファイルを 探したかったら、

    % find /usr/local/ -name "*.sty" -print
でも locate の方が簡単。
    % locate sty

locateを利用するには、updatedbコマンドを定期的に実行して ファイル名のデータベースを作りましょう。 locate単体では、「/usr/local/ 以下のディレクトリを探せ」などのように 細かい探し方はできないようだ。

manファイルをテキストとして保存

ls のマニュアルを ls_man.txt という名前で保存するには、

    % man ls | colcrt > ls_man.txt

emacs で Ctrl-h を Backspace に割り当てる

.emacs に次の1行を書く。

    ;;; C-h to backspace
    (global-set-key "\b" 'delete-backward-char)

新しいもの順に ls

    % ls -t

古いもの順ならば

    % ls -tr

ハードディスクの空き容量を調べる

    % df

送ったメイルがスプールにたまっていないかどうかチェック

    % mailq

less のキー

jで1行下を表示(=1行上にスクロール)、kで1行上。
スペースで1ページ下、bで1ページ上。
<でページの先頭、>でページの最後。
/nantoka でnantokaという語を前方検索。 n で次の候補。N で前の候補。

grep で aaa という文字が入ってない行を探す

b.txt というファイルで aaa という文字が入っている行を表示するのは、

   % grep aaa b.txt

でいい。 逆に、aaa という文字が入っていない行を表示させるには、

   % grep -v aaa b.txt

ついでに、aaa という文字が入っている行数だけを知るには、

   % grep -c aaa b.txt

unix上でbase64の解凍

uudeview というコマンドを使う。 たとえば、attached_mail というファイルに、 base64でエンコードされた添付ファイル付きのメイルを保存したとすると、

  % uudeview attached_mail

で解凍できる。base64 だけじゃなくて、 uuencode なんかも解凍できるらしい。

Linux 管理のおぼえがき

ランレベルの変更

/etc/inittab をいじって変更する。

ブート時に特定の場所でハングアップして起動できなくなってしまって、 /etc/inittab を編集できないときは次のようにする。 起動時のオプションとして、

    LILO: linux 1

とする。するとランレベル1で起動するので、/etc/rc.d/ 以下にある ファイルを編集するなりなんなりして再起動すれば大丈夫。

rpm の使い方

rpm でインストールしたソフトの一覧を見る:

    % rpm -qa

たとえば、pam-0.68-8 の説明を見たかったら、

    % rpm -qi pam

Windowsのおぼえがき

Windows2000のDOSプロンプトでファイル名補完をしてもらう

レジストリエディタで HKEY_CURRENT_USER\Software\Microsoft\Command Processor にあるCompletionCharの値を9(16進数)にする。 Tabキーで補完。 候補が複数あるときは、Tabを押すごとに候補を次々表示してくれる。

MS-IMEで全角スペースを入力する

MS IME の「プロパティ」→「入力設定」→「スペースの入力」を 「常に半角」にしている場合に、全角スペースを入力するには、 Ctrl+Shift+Spaceを押せばよい。

言語バーの「JP」や「EN」のアイコンを消す

Windowsの入力言語が複数あるときは、 タスクバーにある言語バーの左に「JP」や「EN」のアイコンがあって邪魔。 入力言語から日本語以外をアンインストールすれば、アイコンを消すことができる。
「コントロールパネル」→「地域と言語のオプション」→「言語」タブ→ 「テキストサービスと入力言語」の「詳細」をクリック。 「既定の言語」で「英語」を選択。 「インストールされているサービス」から「EN 英語」を選択して、削除。

firefox で iEPG を RD-X○で開く

東芝の DVD & HDDレコーダー RD-XシリーズはiEPG予約に対応しており、 PC で Webブラウザーを使ってテレビ番組の録画予約ができとても重宝しています。 RD-X9からはiEPG予約に対応しなくなったようです。 さて、firefox でこの機能を使うため、長らく iEPG-Extension for RD-Style というアドオンを使っていたのですが、firefoxのバージョンが3.5に なったぐらいから動かなくなってしまいました。というわけで、 gooのテレビ番組表 テレビ王国のテレビ番組表 のiEPGマークを左クリックするとRD-X○で開くようになるスクリプトを作ってみました。 2010年10月からgooはiEPG予約に対応しなくなりました。

  1. Greasemonkey というアドオンをインストール。参考ページ
  2. 下のスクリプトをテキストエディタにコピー&ペーストして、 iEPG2RDX.user.jsという名前で保存。赤字部分(rd-x4)は 自分の機種名に合わせて rd-xs41 などに変える。
    // ==UserScript==
    // @name          iEPG to RD-X
    // @namespace     hata
    // @description   open an iEPG-link by RD-X4
    // @include       http://tv.so-net.ne.jp/chart/*
    // ==/UserScript==
    
    var allLinks = document.getElementsByTagName("a");
    var sendURL = "http://rd-x4/@@@@@@";
    
    for (i = 0; i < allLinks.length; i++)
    {
        var href = unescape(allLinks[i].href);
        if( href.match(/iepg\.tvpi/) ){
                href = sendURL + href.replace(/^http:\/\//,"");
            allLinks[i].setAttribute("href", href);
        }
    }
    
  3. iEPG2RDX.user.jsをfirefoxのウィンドウににドラッグ & ドロップ。 「これはGreasemonkeyのユーザースクリプトです。」という表示が出るので 「インストール」ボタンををクリックすれば出来上がり。
  4. 「インストール」ボタンををクリックしてもインストールされない場合は、 fireboxを再起動するとインストール画面が現れてインストールが進むようです。 firefoxの再起動は、たとえば、「ツール」→「アドオン」で Greasemonkey以外のアドオンのひとつの「無効化」ボタンを押す⇒ 現れた「再起動」ボタンを押す。
  5. それでも、NoScript というアドオンが原因で動かない可能性があります。 「ツール」→「アドオン」で「NoScriptのオプション」→「詳細設定」→「ABE」 で、ルールセットの「SYSTEM」を編集して DENYの上に「Accept GET from tv.so-net.ne.jp」という行を追加。

firefox でカーソルが現れてスクロールがおかしくなる

firefox のウィンドウにカーソルが現れて、 上矢印キーを一回押しただけで画面の最上部まで移動するなどスクロールがおかしくなる ことがあります。

F7 キーを押して、キャレットブラウズモード(caret browsing) のオン/オフを切り替えると問題解決です。
もしくは、「ツール」→「オプション」→「詳細」→「一般」タブの「アクセシビリティ」で、 「ページ中の移動にカーソルを使用する(キャレットブラウズモード)」の チェックを外してもOKです。

より根本的に解決するために、F7キーによるモードの切り替えを無効にする方法:

  1. アドレスバーに about:config と入力。
  2. フィルタに caret と入力。
  3. accesibility.browserwithcaret_shortcut.enabled を右クリックして 「切り替え」を押し、値を false に変える。
  4. できあがり。

firefox のウィンドウを less のキーバインドでスクロールする

Firemacsという アドオンをインストールすれば、「u」を押すと PageUp、スペースを押すとPageDown、 「j」で1行上にスクロール、「k」で1行下にスクロール、など firefoxの閲覧を便利にできます。

もちろん、入力ボックスなどではuやjやkはきちんと使えます。


Top Pageに戻る。