いのでんの進捗

ゆっくりのんびり強くなっていきたいブログ。

【latex】overleaf(uplatex) でディレクトリ構造の図を書く

まえがき

latexでツリー図を書こうと思ったが、Overleafでは tree.sty が使えない1ので、代替packageを探した。 意外と記事がヒットしなかったので簡単にまとめる。

描画したい図

一般的な木構造に加え、ディレクトリ構造も描画できると嬉しい。

結論: forest package

個人的にはforest が最適だったのでこれを紹介する。ちなみに公式docでもお気持ち紹介されている2

www.ctan.org

Tikzをベースにしているので、オプション等は共通した文法である。例) grow'=0

描画可能な図(一例)

f:id:puyobyee18:20191224132545p:plainf:id:puyobyee18:20191224132550p:plain
tree & dirctories

書き方

上述の図のソースコードは以下の通り。

% main.tex
\documentclass[11pt, uplatex]{jsreport}
\usepackage[edges]{forest}

% 場合によっては以下も必要かもしれない。自分の環境では不要だった。
% \usepackage{tikz}
% \usetikzlibrary{trees}
% tree

\begin{forest}
 [VP, for tree={parent anchor=south, child anchor=north}
 [DP[John,tier=word]]
 [V’
 [V[sent,tier=word]]
 [DP[Mary,tier=word]]
 [DP[D[a,tier=word]][NP[letter,tier=word]]]
 ]
 ]
\end{forest}
% directory

\begin{forest}
 for tree={grow'=0,folder,draw}
 [/
  [home
   [saso
    [Download]
    [TeX]
   ]
   [alja]
   [joe]
  ]
  [usr
   [bin]
   [share]
  ]
 ]
\end{forest}
% 念のためlatexmkrc
$latex = 'uplatex';
$bibtex = 'pbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$pdf_mode = 3; 

詳細は http://ftp.jaist.ac.jp/pub/CTAN/graphics/pgf/contrib/forest/forest-doc.pdf を参照されたい。

注意

上述のdirectory を描画する際、コードにインデント(スペース1つで良い)をつけないと以下のように、Package pgfkeys Error: I do not know the key '/tikz/grow' というエラーが発生した。latexのブロック定義ってインデントだっけ?

f:id:puyobyee18:20191224132549p:plain
Package pgfkeys Error: I do not know the key '/tikz/grow'


  1. overleaf で使えるパッケージのリスト(公式Doc) に含まれていない。

  2. Using the forest package to create trees in LaTeX - Overleaf, Online LaTeX Editor