LaTeXの文章の中でditaaを使いたい。

LaTeXで文書を書いている時に、図表を入れたい場合がある。表やグラフなら、table環境やpgfplotsパッケージを使えばよいよね、ということになる。 だがほんのちょっとした図を描きたいときにはどうしたものだろう。 例えば、こんなような。 f:id:dakusui:20180929181517p:plain

わざわざ、WordやPowerPointやWriterとかそんなようなツールを立ち上げて描画して、.pngにして、includegraphicsとかめんどくさい。大した図じゃないのに。 さらに問題なのは図表のもとになったファイル(.docとか.pptとか)を別に保存しておかないとならないことだ。でないと変更ができなくなってしまう。私の場合、そういうファイルは極めてしばしばどこかに行ってしまうし、製図したツールのサポートがいつまでもあるとは限らない。MicrosoftやLibreオフィススイートなら大丈夫なようにも思えるが、卒業や転職を気にライセンスが使えなくなったりすることもあるし、オープンソースコミュニティの存続やプロダクトの互換性がどこまで担保されるかというのは一応は未知数のことだ。

さて、冒頭に触れたditaaというのは、アスキーアートで書いた図表を綺麗にレンダリングしてくれるエンジンだ。

ditaa

実は先ほどの図は、ditaaに以下のアスキーアートを与えた時に得られる図なのだ。

    +--------+   +-------+    +-------+
    |        | --+ ditaa +--> |       |
    |  Text  |   +-------+    |diagram|
    |Document|   |!magic!|    |       |
    |     {d}|   |       |    |       |
    +---+----+   +-------+    +-------+
        :                         ^
        |       Lots of work      |
        +-------------------------+

LaTeXのソースファイル中に書いた、上のようなアスキーアート

f:id:dakusui:20180929190232p:plain

こんな風にレンダリングされたら便利ではなかろうか?少なくとも私は使いたい。 ということでそういうものを作ってみた。gistはここにある。

The "ditaa" environment · GitHub

このエントリの以降の部分はこのgistにコメントとして付した使用方法を和訳したものである。

事前条件

  • ditaaがインストールされていること。(コマンドラインからditaaが実行できること)。最近のメジャーなUbuntuLinuxディストリビューションならsudo apt install ditaaとするだけでインストールできると思う。Macでもbrewが使えればsudo brew install ditaaだけでOKだった。Windowsの場合はよくわからないのだがscoop というものがあるらしいので、これで簡単にインストールできるのかも知れない。その辺の最近の情勢がよく分からないので誰か教えて欲しい。
  • pdflatexなりlatexなり、LaTexのソースファイルをコンパイルする時に--enable-write18 オプションを与える必要がある。つまり、残念なことだがOverLeafやShareLaTeX(OverLeafに統合されるらしいが)では使えない。

使用方法

  • ditaa.styファイルを .tex ファイルと同じディレクトリに置く。
  • ditaaディレクトリをイメージがおいてあるディレクトリ(\graphicspathコマンドで指定するディレクトリ)の下に作る。ちなみにditaa.styはこのディレクトリの下にあるditaaディレクトリに.ditaaファイルや.pngファイルを作る.
  • .texファイルの冒頭でusepackage[imagepath=IMAGEPATH]{ditaa}と書く。IMAGEPATHの部分は前述の\graphicspathで指定するディレクトリと同じものである。
  • あとは普段通り、 .texコンパイルすることになるが --enable-write18オプションを忘れないこと。

後はこんなようなTeXソースが

\begin{ditaa}{ditaa caption example}{ditaaexample}
    +-----+     +----+     +---+
    |Store+---->|This+---->|One|
    +--+--+     +----+     +---+
       |
       V
    +-----+
    |THIS |
    +--+--+
       |
       V
    +-----------+     +--+
    |another one+---->|Hi|
    +-----------+     +--+
\end{ditaa}

こんなふうにレンダリングされることになる。

screenshot from 2018-09-27 06-43-54

ちなみに生成される図には\label{fig:ditaaexample}のように、ラベルが自動で与えられるので\ref{fig:ditaaexample}とすれば文中からその図を参照できる。 ラベルが衝突すればどちらにせよエラーになる(と思う)ので問題にはならない筈だが、ditaa環境の第二引数、つまりこの例ではditaaexampleはditaaが.pngを生成する際のファイル名に用いられるので一応注意して欲しい。

ちなみに

     \begin{ditaa}[6cm]{ditaa caption example2}{ditaaexample2}
       +---------+
       | cBLU    |
       |         |
       |    +----+
       |    |cPNK|
       |    |    |
       +----+----+
    \end{ditaa}

のようにすれば、図の幅を指定できる。本当は\includegraphicsに指定できる全てのオプションを使えるようにしたかったのだが、私のLaTeX力では無理だった。

Tips

近頃はascii-flow みたいなサイトでアスキーアートの作図ができるので、一緒に使うと便利だと思う。

今後の課題

  • 内部的に\write18という外部プログラムを実行するためのコマンドを使ってditaaの起動を行っている。---enable-write18を指定する必要があるのもこのためである。従ってOverLeafのようなオンラインLaTeXサービスでの利用はできない。このパッケージが将来的に広く使われるようになればうまい方法があるのかも知れないが(ditaaコマンドを特別扱いするとか)、私がLaTeXを使うのは何年ぶりだろうという話だし、なんなら.styファイルを作るのも\newenvironmentコマンドを使うのも初めてなので一体どうすればいいのか見当もつかない。LaTeX識者のアドバイスをお待ちしたい。
  • \includegraphicsコマンドに与えられる引数は全てサポートされるべきだが、そうなっていない。keyvalとかそういうのを使うようなのだが、難しすぎてよく分からない。本文中に書いたように私のLaTex力を超えると判断した。いい加減ペーパー自体を書かなきゃいけないし。これについてもLaTeX識者のアドバイスをお待ちしたい。

ハンガーマネージメント

しようもないダジャレで恐縮だが、ダイエットでは「空腹」をいかに管理するかはとても重要である。脳は活動に大量のカロリーを要する器官であり、我々ホワイトカラーの頭脳労働の生産性は空腹感によって著しく低下する。しかし体重を減らすためなら職業などどうでもいいという人は多くあるまいし、それはホワイトカラー、知的労働者にふさわしくない考え方である。かと言って空腹を紛らすために無秩序・無計画に間食をしていてはダイエットの成功はおぼつかない。そこでどのような方法で空腹を紛らすかを考える必要が生じるのである。

間食

空腹を感じているのだから、とにもかくにもなにかを摂取して空腹を紛らすのは基本である。経験上、飲み物ではあまり効果がない。無論、カロリーが大きなものを口にしてはダイエットの進捗に影響が生じる。カロリーが低く食べごたえがあるものを日常から把握しておくべきである。

たとえば、こういう商品がある。
www.lawson.co.jp

また、ガムは10枚入りのパッケージ全体でおおよそ30kcal程度のものがある。一回空腹を紛らせ、集中できる精神状態を整えたらすかさず仕事に取り掛かり「作業興奮」を起こすようにした方がよい。

運動

空腹を感じたときに運動などする気にならないかも知れないが、不思議なことに無理やり体を動かすと空腹を感じなくなる。空腹とは燃料が足りないから感じるもののはずなのに、より燃料を必要とする活動を行うとそれを感じなくなるのは不思議なものだ。神が設計した人体にあるバグなのかも知れない。私の場合、勤務しているフロアの5階上に会社の購買があり、間食を買いに行く際にはエレベーターを使わずに行くが、これでも多少は空腹が紛れる。

ただ、この種の運動をしたからと言って「すこし食べてもいいか」などと思わないことだ。少なくとも階段で何階か上り降りすることで消費される程度のカロリーは微々たるものであり、ダイエットの進捗にはほぼなんの影響もない。冷徹に活動量計が示す数字だけを信じ、これを頼りに行動すべきである。逆説的だが、こうすることで謂わば「予算」を厳密に管理し、「頑張りすぎ」による体調不良(風邪等)をも避けることができるのだ。

ダイエットの大敵

2年ほど前、fitbit(前回も紹介した活動量計)を使うことで私は初めてダイエットに成功した。それまでは意を決して挑戦しては失敗することを繰り返し、年を追うごとにだんだんと体重は増加していた。


年をとるとはこういうものかと正直なところ諦めていた。中年が中年太りになるのは当然ではないかと。

活動量計を用いて行う今では私が「累積赤字ダイエット」と呼んでいる方法論を創始することで、私は人生で初めてダイエットに成功したのだが、それまでのダイエットはなぜ失敗してきたのであろうか?私の意志が弱かったのだろうか?それは仮にそうだとしても間接的な原因である。

より直接的には「風邪」である。ダイエット中にはどういうわけか風邪を引くのだ。
我々は社会人なので、風邪になれば一日も早く治さなくてはならない。私の場合、滋養があり消化の良い物を大量に摂取し、(無論、良いことではないが)市販の感冒薬を用量の3倍程度飲んで長時間の睡眠をとることで一気に治す(真似するなら自己責任で)。

要するに、栄養を沢山取って寝るということだ。

当然、これではダイエットにならない。でも仕事もあるしダイエットだけしてるわけには行かないのでここで中止、失敗してきた。開始前に比べて却って太った場合もあったろう。

風邪の予防こそがダイエット成功の秘訣(だと思う)

以下は私の場合こうだと思うという個人的な体験とそれに基づく個人的な意見だ。

なぜ、風邪にかかるのか?まず、ダイエット中というのは栄養不足の状態を作り出していると言え、普段よりも風邪にかかりやすい。より不足していればより風邪にかかりやすいと言えよう。fitbitで摂取したカロリーと消費したカロリーの差をつぶさに見ていたところ、私の場合一日あたりのカロリー赤字が800kcalになり、それが2日以上続くと体調が悪くなるようだ。要するに頑張りすぎ。これがひとつ目の理由。これについては上述のfitbitを活用するなりして、計画的で無理のないダイエットを行うのがよいと思う。また、ダイエット中に摂取する食事はカロリーを抑えるため、単調になりがちだ。栄養バランスが崩れればやはり風邪になりやすい。つまり栄養不足。これがふたつ目の理由。そこで私はダイエット中は毎朝、サプリメントをとるようにしている。

私が使っているのはNature Made Multiple Vitamin & Minerals(以下)だ。


是非、参考にして欲しい。今なら楽天市場ではお買い物マラソンが開催中でお得だと思う。アフィリエイトで私にもちょっとだけお小遣いが入るといいなあ。

ダイエットのROI(2)

前回のエントリでは3つのことを述べた。

dakusui.hatenablog.com

すなわちダイエットの成否を左右する「克己心」は限られた資源であり有効に用いるべきものであること。ダイエットにおいて目標とされる体重は正確に測定できるものではなく、その変化の傾向を把握すべきものであり、それには数日単位の時間がかかること。今一つはそれゆえ体重をダイエットの指標にすると克己心という資源がどの程度有効に用いられているか把握が困難になることである。

ではどうするべきか?

消費したカロリーよりも摂取したカロリーの方が大きければ人間は確実に痩せる。ではどのくらい痩せるか?

ラードと呼ばれる食品がある。豚脂とも呼ばれる。名のごとくブタの脂肪である。
1kgあたり9,020kcalのエネルギーを持つ。

まず読者に問おう。人の脂肪は1kgあたり、どの程度のエネルギーを持つのであろうか?

ブタと人間はどちらも哺乳類である。それほどの違いはあるまい。したがって、ひとまず9,020kcalと推測しておこう。我々の目的はダイエットであり、この程度の精度の数値で十分だ。いずれ述べるが私は過去、自身の身体を用いて実験を行い、この数値を確かめたことがある。

ということは摂取したカロリーの累計から消費したカロリーの累計を減じ、それを9,020kcalで除すれば、その期間に減少した体重が求められる。
では摂取したカロリーや消費したカロリーは、どうすれば求まるのか?

摂取したカロリーは摂取した食品の栄養成分表示を合計することによって手間はかかるものの求められる。消費したカロリーはどうであろうか?これはなかなか困難である。「今日は頑張ったから少し多めに食べてもいい」と自分に言い訳することは多いのではないか。「頑張った」の内容は階段を上ったりする程度のことだったりもする。これをやってしまうと努力の効果が確認できず、ダイエットがウヤムヤになる。

そこで私は「活動量計」と呼ばれる器具を使うことをおすすめしたい。色々と種類があるが私が使ったのはfitbitという商品だ。Apple Watchでもいいと思うが、これの方が電池の持続時間が長く消費カロリーの測定が正確にかつ楽になると思う。


24時間常に装着しておくと、消費したカロリーが自動的に計算されていく。歩数計と脈拍計が内蔵されており、それに基づいて計算を行っているので自転車による運動を行なった場合、アプリなどを用いて後から人手で補正する必要がある。

これによって得られた数字と、その日の摂取カロリーを用いれば、その日何グラム痩せた<はず>か、が分かる。

なぜ、これが便利か?

先にも述べたように克己心は貴重な資源である。それゆえ有効に使わなくてはならない。目の前にある美食を我慢するべきか、堪能するべきか。その判断は客観的で信頼に足る情報に基づくべきである。それを確実に行えなければダイエットは成功しない。

なぜなら人間誰しも、欲求に身を任せたいときはあるからである。ではどこまでその欲求に身を任せることが適切か。活動量計に表示された数字と食品の栄養成分表示がそれを示してくれるのだ。

ダイエットのROI(1)

体重や体脂肪は測定できるのか

If you can't measure it, you can't improve it

測定できないものは改善できない

とはウイリアム・トムソン、すなわちケルヴィン卿に帰せられる言葉である。 我々成人の場合、ダイエットにおいて測定されるのは体重である。*1

 

では体重は正確に測定できるのであろうか?

 

実際にはこれはかなり疑問である。例えば私の体重計は、昨日の朝には53.9kgと表示していたが、帰宅後再度測定すると53.15kgを示していた。

 

では私の昨日の体重は一体いくらであったのか?

 昼食のうどんはそこに入るのか入らないのか?

 

ダイエットのROI:体重に代わる指標の必要性

この議論への深入りは避けるが、結局「真の体重」なるものの測定は意外に困難であり、そんなものは存在しないのかもしれないという点を指摘したい。尾籠な話だが、排便の前後では体重が2kg違うのはあり得ることだ。つまり、短期的に1kg増えた減ったというのはあまり意味がなく、体重は長期的な変化や傾向を捉える必要がある数字だということだ。

 

健康上、美学上太り過ぎ、痩せすぎの体型というものは存在するのであって、健康な身体や美しい容姿を獲得するために禁欲を行うのがダイエットである。禁欲(投資)で健康や美容(リターン)を手に入れる試みがダイエットであると見るならROI(Return on Investment; 投資利益率)を問題にしなければならない。

 

禁欲あるいはそれに伴う苦痛の数値化は全く不可能である。しかしながら直接感覚できる。一方、健康や美容にどれだけ近づいたかを数値化するにはどうしたらいいか。「体重」や「体脂肪率」が最適な指標なのであろうか?

 

体重は健康や美容に極めて密接な関係があるものの、測定には不確実性があり意味のある値を得るには少なくとも数日に渡る長期的な観察が不可欠である。これは自身のダイエットが現在順調に推移しているかを判断するには数日を要するということでもある。

体脂肪も同様であり、さらに不確実性は高く信頼性は低い。

 

「克己心」という資源

我々は日々様々な欲望に晒されている。美酒、美食、怠惰、不摂生。こうした誘惑は突如として心に浮かぶ、あるいは友人たちからもたらされるものである。文明人としてこれらの制御は必要だが、完全に否定するのもまた人間性を欠いた考えだ。美酒や美食を節度を持って時には当意即妙をもって楽しみ、かつ美や健康に近づかなくてはならない。

 

しかるに、美酒や美食や誘惑の埋め合わせにどのくらいの禁欲をすればよいのか?自分がした禁欲は埋め合わせに十分なのか過大なのかあるいは不足しているのか、それが分からなくては、あるいは分かるのが数日後ということであれば、ダイエットは失敗しやすくなろう。人間の克己心は限られた資源なのである。

(続く)

*1:「体脂肪を減らす」のを目的とする場合もあるが、体脂肪計が示す数字がどのくらい信頼できるか?かなり疑問だ。長期的な傾向や水準の目安にはなるかもしれないが。

序に代えて

ダイエットについて何を書くべきか。こう考えた時に思い浮かべることがある。

2年前のある日、私の左手は私の意志に従うのをやめ、小刻みに震え始めた。私は脳の異常を懸念して会社を早退し脳神経外科を受診した。医師が処方した薬は「湿布薬」であった。曰く


「肩こりが原因でしょうね。少々太ってきたことが原因かも知れません」


私は生来、痩せて見える方である。肥満を指摘されたのは生まれて初めてであり衝撃であった。しかし数値は正確かつ残酷に事実を告げる。当時の私の体重はBMIからは初期の肥満ということにならざるを得ない。私の肉体が搭載した脂肪が私の華奢な筋肉に過大な負荷を加え結果として肩こりを起こしていたというのはありそうな話である。

爾来、ダイエットを決意し半年ほどの間に標準体重よりやや少ない今の体重までに減量した。差し引き8kgほどのダイエットに成功したことになる。だが思うにダイエット前の私の体重や体型というのはホワイトカラーにありがちなものだったろう。つまり「小太り」だったということだ。

ダイエットについてその個人的進捗や日々思うことを綴るだけでは、それほどの興をそそるものではあるまい。しかしながらしてみれば私が行ったダイエットは運動不足に陥りやすいホワイトカラー向けの方法論という価値があるかもしれない。

では私の方法論は何に基づくのであろうか。思うにこのようなことであろう。

  • 活動量計の数値と摂取カロリーの厳格なる記録と管理
  • ダイエット中に直面する様々な困難への精神論に傾かざる具体的な対処。これらの困難には以下のことが挙げられる。
    • 業務中の空腹
    • 体調の不良や風邪
    • 無聊を託つ週末
    • 飲み会
    • 美味なる食事
    • その他
  • カロリーの少ない食品、料理
  • ダイエット中に行う運動について

今後このブログのエントリではこれらの事事を折りに触れ綴っていきたいと思う。

美容体重というもの

突然だが、ダイエットをしてみようと思い立った。これは実験である。

私(40代・男性・ホワイトカラー)の体重は現在、54.2kgであり標準体重よりも2kgほど軽い。健康の上ではダイエットの必要はない。

これを「美容体重」とされる51.2kgまで落としてみようと思う。

「美容体重」とはなんであるか説明しなくてはならない。それは「BMIが20となる、見た目がスリムな体重」である。

女性たちの世界にはこのような格言がある。「標準体重はデブの入り口」

では一体どのような体重なら「デブ」ではない、あるいは「美しい」体型とされるのか。それが「美容体重」である。彼女たちの世界にはまた「モデル体重」という概念もあり、それはBMIが18となるような体重を指す。彼女たちの定義に従えば身長が170cmの人類に対する各体重は以下のようになる。

項目 体重 kg
標準体重 63.58
美容体重 57.8
モデル体重 52.02

私の場合、骨格が華奢なのか筋肉が多いためか、背こそ高くないものの均整は取れており、現在の体重ですでにやや痩せて見えるくらいのはずである。

疑問はここである。

  • ならば、彼女たちが言う「美容体重」なるものは、実は痩せすぎに見える体重なのではなかろうか。

これを立証するためには、女性の身長と体重を聞き出し、その女性がその時点で美容体重にあるならば彼女が痩せ過ぎに見えるかどうかを判定すれば良い。
しかしながら、これにはいくつかの問題点がある。

  1. ある女性が美容体重にあるかどうかは聞いてみないと分からず、ちょうど美容体重にある女性に行き着くまでに多くの試行を繰り返す必要がある。
  2. 女性には嘘をつく権利があると考えられており、得られる情報が正しいとは限らない。
  3. そもそも何よりも女性に体重を聞くのはマナーに反する。


以上の理由で、この方法は実用的とは言えない。
もうひとつのやり方は、私自身の体重を「美容体重」にし、その時点での自身の体型が美学上、最適と感じうるかあるいは「痩せすぎ」と見えるかを判定することである。

今回の実験では私の社会的声望を傷つけかねない前者のアプローチをとることはせず、後者の手段によって既に述べた以下の命題についての結論をえることとしたい。

「『美容体重』なるものは、実は痩せすぎに見える体重なのではなかろうか」

ついでに折にふれてはダイエットに役立つ商品をアフィリエイトで紹介し、小遣いの足しになればいいなとも思う。