Skip to the content.

ドキュメンテーション

English | 日本語

目次

  1. 基本的な使い方
  2. ツリーの方向
  3. Tidy レイアウト
  4. RTL 文字体系のための鏡像レイアウト
  5. PNG形式を用いる場合
  6. SVG形式を用いる場合
  7. 好みのフォントを使う
  8. テキストの描画
    1. フォント・スタイル
    2. テキスト装飾
    3. 上付き文字と下付き文字
  9. スペースと改行
    1. ラベル内のスペース
    2. 改行
  10. テキスト以外の要素の描画
    1. ボックス・サークル・水平線・矢印
    2. 水平線
  11. コネクター
  12. リーフを囲む括弧と矩形の描画
  13. ノードごとの色指定
  14. 領域シェード
  15. 一部の文字を表示するためのエスケープ
  16. ノードからノードへのパスの描画(試験的機能)
  17. ノードからノードへの追加的なコネクターの描画(試験的機能)
  18. コマンドラインインターフェースの機能
    1. Penn Treebank形式
    2. 標準入力のサポート
    3. 設定ファイル
    4. TikZ出力

基本的な使い方

エディターエリアにラベル付き括弧表記でテキストを入力し,Draw PNGまたはDraw SVGボタンをクリックします.

樹形図のすべてのブランチ(枝)やリーフ(葉)は,ノード(節点)に属します.ノードを作成するには,ラベルテキストを開始括弧の直後に配置します.ブランチは,空白で区切っていくつでも設定できます.リーフのテキストに1つ以上の空白が含まれているとき,空白はそのまま表示されます.ノードのラベルに空白を含めたいときには <> 記号を使って表します.例えば Modal<>Aux とすれば Modal Aux と表示されます.

終端ノードとリーフの間に描かれるコネクターの描画方法は3種の中から選べます(autobarnone).auto では,1つ以上の空白を含むリーフ(要するに「句」)に対しては終端ノードを頂点とした三角形を描画します.リーフが空白を含まない場合(つまり「単語」の場合),垂直線が描かれます .なお,リーフの先頭に ^ をつけると,そのリーフが句であると宣言することになります.したがって必ず三角形が描かれます. bar では,すべてのリーフに関して垂直線が描かれます. none では終端ノードとリーフの間にコネクターは描かれません.これらのコネクターは Hide default connectors オプションをオンにすると非表示(透明)にすることができます.

ノードを表すテキストやリーフを表すテキストの中で改行を行たい場合,改行文字 \n を用いることができます.

RSyntaxTreeではPNG形式またはSVG形式で画像を生成します.どちらもMicrosoft Wordで作った書類などに貼り付けることができます.PNG形式の方が一般的ですが,SVG形式の画像は拡大しても描画品質が変わらないため,高品質なグラフィックが必要な場合に便利です.SVG形式の画像は,Adobe Illustrator,Microsoft Visio, BOXY SVG などのソフトウェアで読み込んで編集することができます.

Font styleFont sizeConnector heightColor の各オプションについては説明の必要はないでしょう.これらのオプションの値を変更することで,樹形図の外観を変えることができます.

ツリーの方向

Direction オプションでツリーのレイアウト方向を制御できます:

左から右のモードでは,コネクタ,三角形,移動パス,ノード間直線接続のすべてが水平方向に適応されます.Connector Height オプションは LTR モードではツリーのレベル間の水平距離を制御します.

Tidy レイアウト

Tidy レイアウト オプション(tidy,CLI では --tidy)はレイアウト方式を選ぶオプションで,最も広いものから最も密なものまで一つの尺度になっています:

コネクタの高さは自動調整されます.Tidy モードは小さな高さ予算(樹全体の高さの5%程度)を枝の広がりが最も大きいレベルに配分し,図をほとんど縦長にすることなく枝の角度を揃えます.Tidy モードではコネクタ高さを手動で調整する必要はありません.

Tidy レイアウトがラベルの重なった図を出力することはありません(圧縮によって衝突が生じる場合は,直前の安全な配置に戻します).上から下・左から右のどちらのレイアウトでも機能し,Mirror とも併用できます.ギャラリーの大半の図は low で描画しています.X-bar 系と形態論の例は high,日本語の使役受身の図は medium を使っています.

Horizontal spacinghspacing,デフォルト 1.0,目安 0.5〜3.0)は,Connector height が縦のリズムを調整するのと対になる横方向の間隔倍率で,tidy の有無に関わらずすべてのレイアウトモードで有効です(旧 tidy_spacing は互換エイリアス).

RTL 文字体系のための鏡像レイアウト

アラビア語やヘブライ語など右から左に書く文字体系では,樹形図も右から左に展開させ,文頭の語を右端に置く形で描くのが慣習です.Mirror オプション(mirror: on,CLI では --mirror)は,レイアウト確定後の樹全体を水平方向に反転してこの慣習に従います.構造は変わらず,リーフの並び順だけが逆転して,文が自然な方向に読めるようになります.

MirrorDirection と組み合わせられます:ttb + mirror が RTL の標準的な樹形図,ltr + mirror はルートが右・リーフが左に展開する配置になります.描画される要素はすべて反転後の位置に自動的に追従します.実例はギャラリーの Multilingual カテゴリのアラビア語の例をご覧ください.

PNG形式を用いる場合

Web インターフェイスでは次の3種類の書体を選べます.

いずれも漢字・ハングル・かなは Noto CJK にフォールバックするため,どれを選んでも CJK のテキストを描画できます.なお cjk という第4の書体(Noto Sans CJK を先頭に置くもの)もありますが,これはコマンドライン(-n cjk)とライブラリからのみ指定でき,Web インターフェイスには出していません.

SVG形式を用いる場合

SVG形式を用いる場合,期待通りの表示を得るためには,ご使用のコンピュータに適切なフォントがインストールされている必要があります.下記のフォントをあらかじめインストールしておいてください.必要なフォントがインストールされていない場合は,別のフォントで表示されるため,見た目のバランスをやや欠くことがあります.

1.8.1 以降,ギャラリーで扱うスクリプトはシステム任せのフォールバックではなくフォント名を明示して解決します(Noto Sans ArabicNoto Naskh ArabicNoto Sans HebrewNoto Serif Hebrew,およびデーヴァナーガリー・タイ・クメールの Noto Sans/Noto Serif).これらのフォントが導入されている環境どうしであれば,同じ入力が同じ字形で描画されます.数学用英数字(U+1D400 以降.例えば vP のイタリック体の v)はまだ明示していないため,環境によって字形が変わります.

好みのフォントを使う

上記のフォント指定はシステムの既定より優先されるため,お使いのアラビア語フォントなどがあっても Noto が優先されます.RSyntaxTree 側を変更しなくても,fontconfig の alias で上書きできます.たとえばアラビア語を Amiri で描画するには,~/.config/fontconfig/fonts.conf に次を書いて fc-cache -f を実行します.

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
  <alias binding="strong">
    <family>Noto Sans Arabic</family>
    <prefer><family>Amiri</family></prefer>
  </alias>
</fontconfig>

計測も描画も同じ fontconfig を経由するので,置き換えたフォントで計測されレイアウトも崩れません.

テキストの描画

フォントのスタイルとしてイタリック/ボールド/ボールド+イタリックを指定できます.テキスト装飾としては,上線,下線,取り消し線を指定できます.また上付き文字と下付き文字を指定できます.これらは組み合わせて使用することもできます.

フォント・スタイル

Style Symbol Sample Input Output
Italic *TEXT* *italic* italic
Bold **TEXT** **bold** bold
Italic+bold ***TEXT*** ***italic bold*** italic bold

テキスト装飾

Decoration Symbol Sample Input Output
Overline =TEXT= =overline= overline
Underline -TEXT- -underline- underline
Line-through ~TEXT~ ~linethrough~ linethrough

注意: 上線はSVGでは使用できますがPNG形式の画像では表示されません.

上付き文字と下付き文字

Sample Input Output
normal_subscript_ normalsubscript
normal__superscript__ normalsuperscript

スペースと改行

ラベル内のスペース

Sample Input Output
X<>Y X Y

ラベルが <> のみのノードは不可視の中継点として描画され,コネクタの線は途切れずに貫通します.これを連ねる(例:[the [<> ði]])と浅いリーフを下の段に送れるため,すべての終端要素を同じ高さに揃えたい場合に便利です.

リーフのテキスト中の半角スペースはそのままスペースとして表示されます.<>は基本的にはラベル内でスペースを表示したいときに使いますが,リーフ内のテキストでも有効です.

改行

Sample Input Output
str1\
str2
str1
str2
str1\
\
str2
str1

str2
str1\ str2 str1
str2
str1\ \ str2 str1

str2
str1\nstr2 str1
str2
str1\n\nstr2 str1

str2

テキスト以外の要素の描画

テキストと組み合わせてサークル○,ボックス□,水平線などを描画することができます.

ボックス・サークル・水平線・矢印

Sample Input Output
||
{}
*||*
*{}*
|/|
{/}
|1|
{1}
|abc|
{abc}
--
*--*
->
*->*
<-
*<-*
<->
*<->*

水平線

Sample Input Output
str1\
---\
str2
str1
——
str2
str1\ ---\ str2 str1
——
str2
str1\n---\nstr2 str1
——
str2

ここで ---- の3つ以上の連続を意味します.

コネクター

終端ノードとリーフの間に描かれるコネクターの描画方法は3種の中から選べます(autobarnone).auto では,1つ以上の空白を含むリーフ(要するに「句」)に対しては終端ノードを頂点とした三角形を描画します.リーフが空白を含まない場合(つまり「単語」の場合),垂直の直線が描かれます .なお,リーフの先頭に ^ をつけると,そのリーフが句であると宣言することになります.したがって必ず三角形が描かれます. bar では,すべてのリーフに関して垂直の直線が描かれます. none では終端ノードとリーフの間にコネクターは描かれません.

リーフを囲む括弧と矩形の描画

ラベルまたはリーフとなるテキストの最初に(^ が存在する場合はその直後に) # を付けると,そのテキスト全体を角括弧([ ])で囲みます(例:[#NP text], [NP #text], [NP ^#text]).

テキストの最初に ## を付けると,テキスト全体を矩形(ボックス)で囲みます.

テキストの最初に ### を付けると,テキスト全体を太い線の矩形(ボックス)で囲みます.

ノードごとの色指定

@color: プレフィックスを使用して,個々のノードにカスタムカラーを指定できます.色名とHEXカラーコードの両方がサポートされています.

入力例 説明
@red:NP 色名(赤)
@blue:VP 色名(青)
@#FF5500:NP HEXカラーコード
@#0A0:VP 短縮形HEXカラーコード

マークアップの順序:他のプレフィックスと組み合わせる場合は,次の順序を使用してください:^(三角形)→ #(囲み)→ %(領域シェード)→ @color:(色)

入力例 説明
^@blue:NP 三角形コネクター+青色
#@red:NP 角括弧+赤色
^#@green:NP 三角形+角括弧+緑色

領域シェード

###### が単一のノードラベルを囲むのに対し,領域シェードはあるノードが 支配する部分木全体の背後に半透明の面(プレーン)を描きます.c-command 領域, 束縛領域,認知文法における参照点の dominion など,「範囲」を面で示したい場合に 役立ちます.

ノードラベルの先頭(^/# がある場合はその直後)に % を付けます.面はそのノードと その全子孫を含むバウンディングボックスを覆い,ツリーの線やラベルの背後に描かれます. シェードの色は既存の @color: 記法をそのまま流用します.% 単独では薄いグレーに なります.

入力例 説明
%VP 既定の薄いグレーの領域シェード
%@yellow:VP 黄色の領域シェード(色名)
%@#ffcc00:VP HEX カラーの領域シェード
%@yellow:@blue:VP 黄色のシェード面かつ青色のノードラベル(2つの色は独立)

各面には,塗りと同系色で少し濃いボーダーが描かれるため,白背景でも領域の境界が 明瞭に区別できます.明示的に指定したシェード色は(@color: の文字色と同様に)常に 尊重されます.白黒の図にしたい場合は,色付きのシェードではなく素の %(グレー)を 使ってください.

重なり合う(入れ子の)領域は,面が半透明なので自然に混色されます.領域シェードは 上下方向・左右方向(-d ltr)の両レイアウトで機能し,すべてのラスター/ベクター出力 (SVG,PNG,PDF,JPG,GIF)に適用されます.

一部の文字を表示するためのエスケープ

文字装飾などのマークアップに使用される一部の文字をテキストとして表示するためには \ によってエスケープする必要があります.使用している環境で \ が使えない場合は ¥ で代用することができます.

Input Appearance
\[[
\]]
\<<
\>>
\^^
\++
\**
\--
\__
\==
\~~
\||
\%%
\\\
¥
<>whitespace
\n↩️
\↩️↩️
\ + whitespace↩️

注意: 単なる改行 ↩️ はスペースとして扱われます.↩️ を1つ以上連続させた場合も1つのスペースとして扱われます.

テキスト中で改行したいときには,1) \n,2) \↩️,3) \ + whitespace のいずれかを用いてください.そうすると出力される画像の中で改行 ↩️ が行われます.

注意: ラベル中の直線アポストロフィ(')は,自動的にタイポグラフィ的な(曲線の)アポストロフィ として描画されます.セリフ系フォントで美しく,T' のような X-bar のプライムにも適します.通常の単語中のアポストロフィ(例:John’s)にも適用されます.

ノードからノードへのパスの描画(試験的機能)

下の3種類の形式でノードからノードへのパスを表示することができます.

樹形図の中でパスを表示したいとき,パスの両端を数字のIDで指定します.数字をプラス(+)記号と共にノードのテキストの最後で指定してください(例:+7). プラス記号とID番号の間に > 記号または < 記号を入れると(例:+>7),パスの終端に矢印が付きます.その際、+>+< のどちらを用いるかで結果は変わりません。矢印の先は常にこれらのいずれかを用いたIDが指定された要素に向けられます。

IDにはどのような数字を用いても構いませんが,必ず 2箇所 で同じIDを指定することが必要です.同じIDを3箇所以上で指定することはできません.

ノードからノードへの追加的なコネクターの描画(試験的機能)

パスの指定と類似した方式でノードからノードへのコネクターを追加することができます.追加的なコネクターは直線で描画されます(polylineにはなりません).追加的なコネクターを描画する際,デフォルトのコネクターを非表示(透明)にしたいときには Hide default connectorsオプションをオンにすると良いでしょう.

追加のコネクターは数字のIDで指定します,プラスとマイナスを連続させた(+-)後にIDを指定してください(例:+-8).マイナス記号とID番号の間に > 記号または < 記号を入れると(例:+->8),コネクターの終端に矢印が付きます.その際、+->+-< のどちらを用いるかで結果は変わりません。矢印の先は常にこれらのいずれかを用いたIDが指定された要素に向けられます。

IDにはどのような数字を用いても構いませんが,必ず 2箇所 で同じIDを指定することが必要です.同じIDを3箇所以上で指定することはできません.

コマンドラインインターフェースの機能

以下の機能はコマンドラインインターフェースでのみ利用可能です.

Penn Treebank形式

RSyntaxTreeはPenn Treebank形式を自動的に検出し,括弧表記に変換します:

# Penn Treebank形式
(S (NP the dog) (VP runs))

# 同等の括弧表記
[S [NP the dog] [VP runs]]

Penn Treebank形式での特殊文字のエスケープ:

入力 表示
\( \) 丸括弧 () をそのまま表示
\[ \] 角括弧 [] をそのまま表示

例:

(S (NP hello\(world\)) (VP test))
→ [S [NP hello(world)] [VP test]]

標準入力のサポート

パイプを使って標準入力からツリーデータを渡すことができます:

echo "[S [NP hello] [VP world]]" | rsyntaxtree -f svg -o ./
cat tree.txt | rsyntaxtree -f png -o ./

設定ファイル

ホームディレクトリまたはカレントディレクトリに .rsyntaxtreerc ファイルを作成して,デフォルトオプションを設定できます:

# ~/.rsyntaxtreerc
format: svg
color: modern
fontsize: 18
leafstyle: auto
symmetrize: off

コマンドライン引数は設定ファイルの設定を上書きします.設定ファイル内の不明なオプションは警告を生成し,無効な値はエラーメッセージを表示します.

TikZ出力

RSyntaxTreeは-f tikzオプションを使用してLaTeXドキュメント用のTikZ/forestコードを生成できます.出力はforestパッケージを使用してLaTeXで直接使用できます.

制限事項: TikZ出力はツリー構造に焦点を当てており,以下の視覚的機能はサポートされていません:

機能 TikZサポート
ノード別カラー指定(@color: 非対応
囲み(### 非対応
三角形コネクタ(^ 非対応
テキスト装飾(太字,斜体) 非対応
下付き・上付き文字(_x___x__ 非対応
パス描画(+1+>1 非対応
領域シェード(% 対応(forestfit to=tree を使用)

LaTeXに精通しているユーザーは,標準的なLaTeXコマンド(例:\textcolor{red}{NP}\textbf{...})を使用して,生成されたTikZコードにこれらの機能を手動で追加できます.

領域シェードに関する注意: 生成される forest コードは各領域の面を TikZ の背景レイヤーに描画します.standalone でない出力を独自のドキュメントに埋め込む場合は,\usetikzlibrary{backgrounds,fit} で必要なライブラリを読み込んでください(standalone 出力では自動的に追加されます).領域色(色名・HEX)は明示的な RGB 値として出力されるため,xcolor が未定義の SVG/CSS 色名(例:lightblue)でもコンパイルできます.