2016年8月29日

もう帰る直前.最後に冷蔵庫の中身が片付いていなくて,パスタとか食べていたり……,いつもより量を食べていたり.せっかくなので夜はどっかレストランに行きたい.ラストスパートで腹に肉つけている気がする.お酒は昨晩殆ど飲みきった.アイスにかけるためのチョコのリキュールと,キールのためと買ったCreme de Cassisが残っている.

といわうけでレストランで晩ご飯を食べてきた.メインにステーキを頼む.レアでといったら表面だけ焼いて殆ど生みたいなのが出てきてフランスを堪能,さらにこの肉がかなりおいしくてフランスを堪能という感じで,フランスでの最後の夜ご飯によかったと思う.帰りは少し遠回りしてノートルダムの夜景を見てから帰った.二年間日常として歩いた道だけど,これで殆ど最後.まぁ明日の便は遅い時間の発なので,最後に人とあったりはするけど.

2016年8月28日

今日から涼しい……はず.昨日も暑くって,家の中は32度近くまであがった.家に冷房はなく,唯一のそれ系は扇風機とうちわ.といっても扇風機はルーターに向けられているのだが…….今日は今は26度(11時).昨日はこの時間に28度を超えていたと思うので,昨日よりはとにかく涼しい.昼間の暑さも辛いんだけど,夜暑くて寝付けないのが辛い.今回は夜中過ぎても全然気温が下がらなかった.

2016年8月26日

というわけで明後日まで暑いようです.明日がやばくて最高気温36度.今日も34度だけど.家の中は昨日はほぼずっと28度ちょい.今日は29度から30度ってとこです.暑い.暑いと思ったんだけど,28度って日本のエアコンのよくある設定だよね.日本人すごいよ.

アパートの同じ階に,短期滞在者日本人向けの貸しアパート(日本人が経営)があって,たまに日本人が出入りしている.今日はばったりあった.なんか見たことあるなぁと思ったら,以前にもあったことがある人だった.ちょくちょくここを借りているらしい.仕事かなんかだろうか.前にきいた気もするけど忘れた…….

2016年8月25日

いろいろ帰る準備ということで,昨日は銀行を解約した.保持し続けられるならばしようかとおもったのだが,どうも一定額かかるようなので諦め.Herzigさんの持っているところ(違う銀行)はかからないと言っていたんだがなぁ.銀行のような難しいところは一人だと不安だったので,大家さんにお願いして一緒に来てもらった.フランスの銀行はアポが必要らしく,あらかじめ大家さんに予約を入れてもらい,近くの銀行待ち合わせ.時間に行ったらもう来ていていろいろ処理をしてもらっていた.最後にカードを使ったのを確認し,残高のチェック,そのままカードで大半を下ろして,「口座を閉じます」と書いている手紙(手書き)にサイン.それでカードと小切手帳を返却して終了.微妙に残っていた残高(3ユーロ弱)のために十分ほど歩いて別の店舗に行った.残高は最初日本に送ることを勧められたのだが,現金でもらえてよかった.

昨日の午前中はHenniartに会った.もうJussieuには入れないので,Poincare研究所で待ち合わせたのだが,入れなくて外で数学の話.

そして暑い.昨日から暑くなり今日はもっと暑い.最後の最後に…….なんか37度とか天気予報で見えてかなり辛い.だけどもう年パスが切れるので今日はルーブルに行くつもり.

2016年8月24日

あるコントロールシークエンス\testの後ろにコードを追加したい,ということはよくある.つまり\test<\testの一回展開><何かコード>という形に定義し直したい.これは

\expandafter\def\expandafter\test\expandafter{\test <何かコード>}
とすれば良い.e-TeX拡張が使える場合は,\unexpandedを使い次のようにもかける.(以前ZRさんに教えてもらった.)

\def\onceexpand#1{\expandafter\unexpanded\expandafter{#1}}
\edef\test{\onceexpand{\test}\unexpanded{<何かコード>}}

一回展開にしたいところを\onceexpandで囲めばいいだけなので,かなり便利.これを踏まえて,\testが引数を一つとる場合にやろうと次のようにしてみた.

\documentclass{article}
\begin{document}
\def\onceexpand#1{\expandafter\unexpanded\expandafter{#1}}
\def\test#1{(#1)}
\edef\test#1{\onceexpand{\test{#1}}[#1]}
\test{A}
\end{document}

コンパイルしてみる.

! You can't use `macro parameter character #' in horizontal mode.
\test #1->(##
             1)[#1]
l.6 \test{A}

あれ,詰まった.上に出ているけど,\testの中身が(##1)[#1]となっているようだ.(#1)[#1]を想定していたのだが.どうも,\unexpandedで囲むと#が増えるみたい.

\edef\test#1{\unexpanded{#1}} % \test: #1->##1

何故増えるのかわからないけど,増えるのだと思ってみて次のようにしてとりあえず解決.

\def\onceexpand#1{\expandafter\unexpanded\expandafter{#1}}
\def\test#1{(#1)}
\edef\deftest{%
  \unexpanded{\def\test#1}{\onceexpand{\test{#1}}\unexpanded{[#1]}}%
}
\deftest

これは以下と等価ということなんだろう.

\def\deftest{%
  \def\test##1{(##1)[##1]}%
}
\deftest

で,なんで増えるのかわからんと思ってつぶやいたらつぶやき返しされたのでメモ.まずe-TeXのマニュアルには,「\unexpanded\the<トークンレジスタ>と同じ」とある.ソース(etex.ch)を見ても,そもそも実装が\the<トークンレジスタ>を使っているように見えるし,

\toks0={#1}
\edef\test#1{\the\toks0}
\show\test
としても,##1となる.

で,なんでこれが増えるかなんだけど,実際は増えていない.\defは次のことをするようだ.以下,#はカテゴリーコード6を常に持つとする.

  • #1という並びを,「一つ目の引数を表すトークン」(?)にする.
  • ###に変換する.よって,##1は「トークン#」と「トークン1」の並びになる.

従って,

\def\test#1{##1}
という定義を考えると,上の理由から\testの中身は「トークン#」と「トークン1」の並びとなる.

一方,先ほどの

\toks0={#1}
\edef\test#1{\the\toks0}
は,まず\toks0の代入の段階では\defは関与していないので上のような変換は行われない.よって\toks0の中身は「トークン#」と「トークン1」の並びである.\edef内の\the\toks0は中身のトークン列に展開されるだけなので,結果\testの中身は「トークン#」と「トークン1」の並びとなる.さっきと同じ.つまり二つの方法で定義される\testは同一である.

では\def\test#1{##1}で定義した\testの中身を見ようと\show\testしたらどうなるか.これは#1 -> ##1と出てきて欲しいのが人情だろう.これを実現するために,\showで出す時はさきほどの\defの逆をする,つまり

  • 「一つ目の引数を表すトークン」を#1
  • ###
変換するようだ.なので,#が一つ増えた,と思ってしまったということのようだ.

トークン代入の方だと納得するけど,\unexpandedだとなんか違うようなーなんて思ったけど,「#1という並びを,『一つ目の引数を表すトークン』にする」という「展開」を抑制しているのだと思うと納得できる気もしてきた.

2016年8月23日

パリもあと一週間.日本に帰るのは寂しいような楽しみなような.ラストスパートかけて贅沢しているので,おなかのお肉が心配です.

2016年8月22日

オリンピックが終わった.閉会式を見てしまって寝不足.日本人がメダルとりまくっていて,日本がわいていたらしい.お祭りに参加できていない感じがしてちょっと残念.その代わりフランスでテレビは見ていた.放送の仕方がちと違う.といっても言語がわからないので映像だけからだが.

とにかくフランス人が出ていれば放送しようする.ある種目をうつしていても,まだ終わっていないのに別の種目をうつすことがある.酷い時には,種目A→種目B(フランス人の出番)→フランス人の出番が終わったら種目Cに移る,なんてことも…….もちろんフランス人が出ていなくても有力選手とか決勝戦とかはうつすけど.

昨晩は「負け特集」(たぶん)をしていた.悲しそうな音楽と,泣き崩れる選手が次々を映し出される.他の時にもやっていたので,割とあるんだろう.最初みた時はよっぽどメダルをとっていなくてうつすのがないんだろうかと心配してしまった.(ちなみにフランスのメダル獲得数は42個と日本より多い.)