Markdown
このセクションでは、Markdown標準ライブラリによって有効にされるJuliaのMarkdown構文について説明します。以下のMarkdown要素がサポートされています:
Inline elements
ここで「インライン」とは、テキストのブロック、つまり段落内に見られる要素を指します。これには以下の要素が含まれます。
Bold
単語を二つのアスタリスク **
で囲むと、囲まれたテキストが太字で表示されます。
A paragraph containing a **bold** word.
Italics
単語を一つのアスタリスク *
で囲むと、囲まれたテキストがイタリック体で表示されます。
A paragraph containing an *italicized* word.
Literals
テキストをそのまま表示する必要がある場合は、単一のバックティックで囲んでください。 `
。
A paragraph containing a `literal` word.
リテラルは、変数、関数、または他のJuliaプログラムの部分の名前を参照するテキストを書くときに使用する必要があります。
リテラルテキスト内にバックティック文字を含めるには、テキストを囲むために1つではなく3つのバックティックを使用します。
A paragraph containing ``` `backtick` characters ```.
拡張として、任意の奇数のバックティックを使用して、より少ない数のバックティックを囲むことができます。
$\LaTeX$
数学として表示されるべきテキストは、$\LaTeX$構文を使用して二重バックスラッシュで囲んでください。``
A paragraph containing some ``\LaTeX`` markup.
前のセクションのリテラルと同様に、ダブルバックティック内にリテラルバックティックを書く必要がある場合は、2より大きい偶数を使用してください。単一のリテラルバックティックを$\LaTeX$マークアップ内に含める必要がある場合は、2つの囲むバックティックで十分です。
\\
文字は、テキストがJuliaソースコードに埋め込まれている場合、適切にエスケープする必要があります。例えば、 "``\\LaTeX`` 構文をドキュメント文字列に。"
のように、文字列リテラルとして解釈されます。あるいは、エスケープを避けるために、@doc
マクロと一緒に raw
文字列マクロを使用することも可能です。
@doc raw"``\LaTeX`` syntax in a docstring." functionname
Links
外部または内部のターゲットへのリンクは、次の構文を使用して記述できます。角括弧 [ ]
で囲まれたテキストはリンクの名前であり、丸括弧 ( )
で囲まれたテキストはURLです。
A paragraph containing a link to [Julia](https://www.julialang.org).
他の文書化された関数/メソッド/変数へのクロスリファレンスを、Juliaのドキュメント内で追加することも可能です。例えば:
"""
tryparse(type, str; base)
Like [`parse`](@ref), but returns either a value of the requested type,
or [`nothing`](@ref) if the string does not contain a valid number.
"""
これにより、生成されたドキュメントに parse
ドキュメントへのリンクが作成されます(この関数が実際に何をするのかについての詳細情報があります)、および nothing
ドキュメントへのリンクも作成されます。関数の変異版/非変異版への相互参照を含めたり、似ている2つの関数の違いを強調したりすることは良いことです。
上記のクロスリファレンスはMarkdownの機能ではなく、Documenter.jlに依存しており、これは基本的なJuliaのドキュメントを構築するために使用されます。
Footnote references
名前付きおよび番号付きの脚注参照は、次の構文を使用して記述できます。脚注名は、句読点を含まない単一の英数字の単語でなければなりません。
A paragraph containing a numbered footnote [^1] and a named one [^named].
脚注に関連するテキストは、脚注参照と同じページ内のどこにでも書くことができます。脚注テキストを定義するために使用される構文は、以下の Footnotes セクションで説明されています。
Toplevel elements
次の要素は、ドキュメントの「トップレベル」または別の「トップレベル」要素内に記述できます。
Paragraphs
段落は、上記の Inline elements セクションで定義された任意の数のインライン要素を含む可能性のあるプレーンテキストのブロックであり、その上と下に1つ以上の空白行があります。
This is a paragraph.
And this is *another* paragraph containing some emphasized text.
A new line, but still part of the same paragraph.
Headers
ドキュメントは、ヘッダーを使用して異なるセクションに分割できます。ヘッダーは次の構文を使用します:
# Level One
## Level Two
### Level Three
#### Level Four
##### Level Five
###### Level Six
ヘッダー行は段落と同様に、任意のインライン構文を含むことができます。
ドキュメント内であまり多くのレベルのヘッダーを使用しないようにしましょう。過度にネストされたドキュメントは、再構成する必要があるか、別々のトピックをカバーするいくつかのページに分割する必要があることを示しているかもしれません。
Code blocks
ソースコードは、以下の例に示すように、4つのスペースまたは1つのタブのインデントを使用してリテラルブロックとして表示できます。
This is a paragraph.
function func(x)
# ...
end
Another paragraph.
さらに、コードブロックは三重のバックティックで囲むことができ、オプションの「言語」を指定してコードブロックのハイライト方法を指定できます。
A code block without a "language":
```
function func(x)
# ...
end
```
and another one with the "language" specified as `julia`:
```julia
function func(x)
# ...
end
```
「フェンス付き」コードブロックは、最後の例に示されているように、インデントされたコードブロックよりも好まれるべきです。なぜなら、インデントされたコードブロックがどの言語で書かれているかを指定する方法がないからです。
Block quotes
外部ソースからのテキスト、例えば書籍やウェブサイトからの引用は、引用の各行の前に >
文字を付けて次のように引用できます。
Here's a quote:
> Julia is a high-level, high-performance dynamic programming language for
> technical computing, with syntax that is familiar to users of other
> technical computing environments.
Markdown.Paragraph(Any["注意: 各行の ", Markdown.Code("", ">"), " 文字の後には単一のスペースが必要です。引用ブロック自体には、他のトップレベルまたはインライン要素が含まれる場合があります。"])
Images
画像の構文は、上記で述べたリンク構文に似ています。リンクの前に !
文字を付けることで、指定されたURLから画像を表示し、リンクではなくなります。

Lists
順不同リストは、リスト内の各項目の前に *
、+
、または -
を付けることで作成できます。
A list of items:
* item one
* item two
* item three
各 *
の前に2つのスペース、後に1つのスペースがあることに注意してください。
リストには、リスト、コードブロック、または引用ブロックなどの他のネストされたトップレベル要素を含めることができます。リスト内にトップレベル要素を含める場合は、各リスト項目の間に空行を残す必要があります。
Another list:
* item one
* item two
```
f(x) = x
```
* And a sublist:
+ sub-item one
+ sub-item two
リスト内の各項目の内容は、項目の最初の行に揃える必要があります。上記の例では、フェンシングコードブロックは item two
の i
に揃えるために4つのスペースでインデントされる必要があります。
順序付きリストは、"バレット" 文字(*
、+
、または -
)を正の整数と .
または )
のいずれかで置き換えることによって書かれます。
Two ordered lists:
1. item one
2. item two
3. item three
5) item five
6) item six
7) item seven
番号付きリストは、上記の例の2番目のリストのように、1以外の数字から始めることができます。順不同リストと同様に、番号付きリストにはネストされたトップレベル要素を含めることができます。
Display equations
大きな $\LaTeX$ 方程式は、段落内にインラインで収まらない場合、以下の例のように「言語」として math
を指定したフェンシングコードブロックを使用して表示方程式として記述できます。
```math
f(a) = \frac{1}{2\pi}\int_{0}^{2\pi} (\alpha+R\cos(\theta))d\theta
```
Footnotes
この構文は、Footnote references のインライン構文とペアになっています。そのセクションも必ずお読みください。
脚注テキストは、脚注ラベルに追加される :
文字を除いて、脚注参照構文に似た以下の構文を使用して定義されます。
[^1]: Numbered footnote text.
[^note]:
Named footnote text containing several toplevel elements
indented by 4 spaces or one tab.
* item one
* item two
* item three
```julia
function func(x)
# ...
end
```
パース中に、すべての脚注参照が一致する脚注を持っていることを確認するためのチェックは行われません。
Horizontal rules
<hr>
HTML タグの同等物は、3つのハイフン(---
)を使用することで実現できます。例えば:
Text above the line.
---
And text below the line.
Tables
基本的なテーブルは、以下に示す構文を使用して記述できます。マークダウンテーブルには制限された機能があり、上記で説明した他の要素とは異なり、ネストされたトップレベル要素を含むことはできません - インライン要素のみが許可されています。テーブルには常に列名を含むヘッダー行が必要です。セルはテーブルの複数の行や列にまたがることはできません。
| Column One | Column Two | Column Three |
|:---------- | ---------- |:------------:|
| Row `1` | Column `2` | |
| *Row* 2 | **Row** 2 | Column ``3`` |
上記の例に示されているように、|
文字の各列は垂直に整列されている必要があります。
カラムのヘッダーセパレーターの両端に :
文字がある場合、その行が左揃え、右揃え、または(両端に :
がある場合)中央揃えであることを指定します。 :
文字がない場合は、カラムは右揃えにデフォルト設定されます。
Admonitions
特別にフォーマットされたブロックは、注意喚起として知られ、特定の発言を強調するために使用できます。これらは次の !!!
構文を使用して定義できます:
!!! note
This is the content of the note.
It is indented by 4 spaces. A tab would work as well.
!!! warning "Beware!"
And this is another one.
This warning admonition has a custom title: `"Beware!"`.
!!!
の後の最初の単語は、注意喚起のタイプを宣言します。特別なスタイリングを生成すべき標準的な注意喚起タイプがあります。すなわち(深刻度の降順で):danger
、warning
、info
/note
、およびtip
です。
独自の注意書きタイプを使用することもできますが、タイプ名は小文字のラテン文字(a-z)のみを含む必要があります。たとえば、次のような terminology
ブロックを作成できます。
!!! terminology "julia vs Julia"
Strictly speaking, "Julia" refers to the language,
and "julia" to the standard implementation.
ただし、そのMarkdownの特定の注意書きタイプを特別扱いするコードがない限り、デフォルトのスタイルが適用されます。
ボックスのカスタムタイトルは、注意喚起のタイプの後に文字列(ダブルクォーテーションで囲まれた)として提供できます。注意喚起のタイプの後にタイトルテキストが指定されていない場合は、タイプ名がタイトルとして使用されます(例:note
注意喚起の場合は "Note"
)。
注意事項は、他のほとんどのトップレベル要素と同様に、他のトップレベル要素(例:リスト、画像)を含むことができます。
Markdown String Literals
md""
マクロを使用すると、Markdown 文字列を直接 Julia コードに埋め込むことができます。このマクロは、Julia ソースファイル内に Markdown 形式のテキストを簡単に含めるために設計されています。
Usage
result = md"This is a **custom** Markdown string with [a link](http://example.com)."
Markdown Syntax Extensions
ジュリアのMarkdownは、基本的な文字列リテラルと非常に似た方法で補間をサポートしていますが、違いはMarkdownツリーにオブジェクト自体を保存する点です(文字列に変換するのではなく)。Markdownコンテンツがレンダリングされると、通常のshow
メソッドが呼び出され、これらは通常通りオーバーライドできます。この設計により、基本的な構文を煩雑にすることなく、参照のような任意に複雑な機能でMarkdownを拡張することが可能になります。
原則として、Markdownパーサー自体はパッケージによって任意に拡張することもでき、または完全にカスタムのMarkdownフレーバーを使用することもできますが、一般的にはこれは不要です。
API reference
Markdown.MD
— TypeMD
MD
はMarkdownドキュメントを表します。MD
コンストラクタは通常直接使用すべきではなく、内部データ構造を構築するためです。代わりに、エクスポートされたマクロ@md_str
および@doc_str
を使用してMD
オブジェクトを構築できます。
Markdown.@md_str
— Macro@md_str -> MD
与えられた文字列をMarkdownテキストとして解析し、対応するMD
オブジェクトを返します。
例
julia> s = md"# こんにちは、世界!"
こんにちは、世界!
≡≡≡≡≡≡≡≡≡≡≡≡≡
julia> typeof(s)
Markdown.MD
Markdown.@doc_str
— Macro@doc_str -> MD
与えられた文字列をMarkdownテキストとして解析し、行およびモジュール情報を追加して、対応する MD
オブジェクトを返します。
@doc_str
は Base.Docs
モジュールと併用できます。詳細については、ドキュメント に関するマニュアルセクションも参照してください。
例
julia> s = doc"f(x) = 2*x"
f(x) = 2*x
julia> typeof(s)
Markdown.MD
Markdown.html
— Functionhtml([io::IO], md)
Markdownオブジェクトmd
の内容をHTML形式で出力します。オプションのio
ストリームに書き込むか、文字列を返します。
代わりにshow(io, "text/html", md)
またはrepr("text/html", md)
を使用することもできますが、これらは出力を<div class="markdown"> ... </div>
要素でラップする点が異なります。
例
julia> html(md"hello _world_")
"<p>hello <em>world</em></p>\n"
Markdown.latex
— Functionlatex([io::IO], md)
Markdownオブジェクトmd
の内容をLaTeX形式で出力します。オプションのio
ストリームに書き込むか、文字列を返します。
代わりにshow(io, "text/latex", md)
またはrepr("text/latex", md)
を使用することもできます。
例
julia> latex(md"hello _world_")
"hello \\emph{world}\n\n"