Syntax
このマニュアルのこのセクションでは、Documenterがドキュメントを構築するために使用する構文について説明します。サポートされているMarkdown構文については、documentation for the Markdown standard library in the Julia manualを参照してください。
@docs
block@autodocs
block@ref
and@id
links@meta
block@index
block@contents
block@example
block@repl
block@setup <name>
block@eval
block@raw <format>
block
@docs
block
ドキュメント内のコードブロックの代わりに、1つ以上のドキュメント文字列を挿入します。すなわち、
```@docs
Documenter
makedocs
deploydocs
```
このブロックタイプは、定義されている場合は CurrentModule
モジュール内で評価され、それ以外の場合は Main
内で評価されるため、ブロック内にリストされた各オブジェクトはそのモジュールから見える必要があります。未定義のオブジェクトは、ドキュメント生成中に警告を引き起こし、コードブロックは最終文書に変更されずにレンダリングされます。
オブジェクトはドキュメント内で一度しかリストされてはいけません。重複するオブジェクトが検出されると、エラーが発生し、ビルドプロセスが終了します。
モジュールからのすべてのドキュメント文字列が最終文書に含まれるようにするために、makedocs
の modules
キーワードを希望するモジュールまたはモジュールに設定できます。すなわち、
makedocs(
modules = [Documenter],
)
どの未記載のドキュメント文字列も、makedocs
が呼び出されると警告を引き起こします。modules
が定義されていない場合、ドキュメントに欠落しているドキュメント文字列があっても警告は表示されません。
特定のメソッドのドキュメント文字列のみを表示するために、ディスパッチタイプを指定して @docs
を使用できることにも注意してください。例えば、
```@docs
f(::Type1, ::Type2)
```
f
に関連するこれらの型のドキュメンテーション文字列のみが表示されます。これは、モジュールが関数を拡張し、その新しいメソッドにドキュメンテーション文字列を追加する場合に便利です。
署名を指定する際は、メソッド定義と正確に一致する必要があることに注意してください。Documenterはディスパッチルールに基づいてメソッドを一致させません。たとえば、foo(::Integer) = ...
にドキュメント文字列が付いていると仮定すると、foo(::Number)
やfoo(::Int64)
はat-docsブロック内でそれに一致しません(Int64 <: Integer <: Number
であっても)。そのドキュメント文字列をスプライスする唯一の方法は、at-docsブロック内で正確にfoo(::Integer)
をリストすることです。
@docs; canonical=false
block
@docs
に canonical
キーワード引数を false
として渡すことで、@docs
が非標準であると見なされるべきであることを示すことができます。
```@docs; canonical=false
makedocs
```
これは、チュートリアルなどのどこかにインラインでドキュメント文字列を含めたいときに便利ですが、ドキュメント文字列の標準バージョンはすでにAPIリファレンスにあります。参照はすべて標準の@docs
ブロックを指します。特定のドキュメント文字列については、@docs ; canonical=false
を使用して好きなだけ含めることができますが、標準でないものは一度だけ含めることができます。標準でない@docs
ブロックは、欠落しているドキュメント文字列をチェックする際には無視されます。
@autodocs
block
提供されたモジュールからすべてのドキュメント文字列を自動的にスプライスし、コードブロックの代わりに配置します。これは、@docs
ブロックにすべてのドキュメント文字列を手動で追加することと同等です。
```@autodocs
Modules = [Foo, Bar, Bar.Baz]
Order = [:function, :type]
```
上記の @autodocs
ブロックは、関数や型を参照するモジュール Foo
、Bar
、および Bar.Baz
に見つかったすべてのドキュメント文字列をドキュメントに追加します。サブモジュールは、その中のドキュメント文字列を含めるために明示的にリストされる必要があることに注意してください。
各モジュールは順番に追加されるため、Foo
のドキュメントはBar
のドキュメントの前に表示されます。Order
ベクターの可能な値は次のとおりです。
:module
:constant
:type
:function
:macro
Order
が提供されていない場合は、上記に示された順序が使用されます。
潜在的なドキュメント文字列がリストされたモジュールのいずれかに見つかった場合、しかしそれが Order
のいずれの値とも一致しない場合、それはドキュメントから省略されます。したがって、Order
は基本的なフィルターおよびソーターとして機能します。
Order
に加えて、@autodocs
にPages
ベクターを含めることで、定義されているソースファイルに基づいてドキュメント文字列をフィルタリングできます:
```@autodocs
Modules = [Foo]
Pages = ["a.jl", "b.jl"]
```
上記の例では、ソースファイルのファイルパスが a.jl
および b.jl
で終わるモジュール Foo
のドキュメント文字列が含まれています。Pages
によって提供されるページ順序もドキュメント文字列をソートするために使用されます。提供された文字列の末尾を使用してページの一致が行われるため、a.jl
は 任意の ソースファイルのファイルパスが a.jl
で終わる場合に一致します。つまり、src/a.jl
、src/foo/a.jl
または src/bar_a.jl
です。
特定のドキュメント文字列を独自の基準でフィルタリングするには、Filter
キーワードを使用して関数を提供できます:
```@autodocs
Modules = [Foo]
Filter = t -> typeof(t) === DataType && t <: Foo.C
```
与えられた例では、Foo.C
のサブタイプのドックストリングのみが表示されています。anonymous functionの代わりに、事前に定義した関数の名前を指定することもできます。
```@autodocs
Modules = [Foo]
Filter = myCustomFilterFunction
```
Modules
にリストされているモジュールから公開名のみを含めるには、Private = false
を使用します。同様に、Public = false
を使用すると、プライベート名のみを表示できます。デフォルトでは、これらの両方はtrue
に設定されているため、すべての名前が表示されます。
Juliaのバージョン1.10まで、"public"は"exported"と同義です。Julia v1.11以降、"public"は"exported または public
キーワードでマークされた"ことを意味します。
Functions exported from `Foo`:
```@autodocs
Modules = [Foo]
Private = false
Order = [:function]
```
Private types in module `Foo`:
```@autodocs
Modules = [Foo]
Public = false
Order = [:type]
```
より複雑なソートが必要な場合は、@docs
を使用して明示的に定義します。
@docs
と同様に、@autodocs; canonical=false
を使用して、非標準の@autodocs
ブロックを示すことができます。@docs; canonical=false
blockを参照してください。
@ref
and @id
links
マークダウンリンクで使用され、Documenterに自動的にクロスリファレンスを生成するよう指示するためのURLです。リンクのテキスト部分は、コードオブジェクト(バックティックで囲まれたもの)、ヘッダー名、またはGitHubのPR/Issue番号(#
の後に数字)であることができます。
# Syntax
... [`makedocs`](@ref) ...
# Functions
```@docs
makedocs
```
... [Syntax](@ref) ...
... [#42](@ref) ...
リンクの「テキスト」部分のプレーンテキストは、ヘッダーへのクロスリファレンスであるか、#
に続く数字の場合は GitHub のイシュー/プルリクエストを指します。バックティックで囲まれたテキストは、@docs
または @autodocs
ブロックからのドキュメント文字列へのクロスリファレンスになります。
バックティックで囲まれたコードは、現在のページの @meta
ブロックで指定された CurrentModule
で評価されます(デフォルトでは Main
)。ドキュメント文字列内の @ref
リンクの場合、CurrentModule
は自動的にドキュメント文字列を含むモジュールに設定されます。
完全修飾名(例:[`Example.domath`](@ref)
または[domath](@ref Example.domath)
)の参照は、Main
でも解決されます。つまり、docs/make.jl
でパッケージをロードすることで、どこからでも完全修飾の@ref
リンクが機能することが保証されます。
@ref
リンクは、同じ構文を使用して、現在のページだけでなく、異なるページのドキュメント文字列やヘッダーを参照することがあります。
Named @ref
s
@ref
リンクの宛先をオーバーライドすることも可能であり、ドキュメント文字列の参照やページ見出しなど、適切なラベルをリンクに追加することで実現できます。
Both of the following references point to `g` found in module `Main.Other`:
* [`Main.Other.g`](@ref)
* [the `g` function](@ref Main.Other.g)
Both of the following point to the heading "On Something":
* [On Something](@ref)
* [The section about something.](@ref "On Something")
これは、現在のモジュールにインポートされていない参照のために完全修飾名を書く必要がないようにするため、またはリンクに表示されるテキストが周囲のテキストに追加の意味を加えるために使用される場合に便利です。
Use [`for i = 1:10 ...`](@ref for) to loop over all the numbers from 1 to 10.
名前付きの @ref
は控えめに使用するべきです。なぜなら、資格のない名前を書くことは、同じ名前の定義を提供する複数のモジュールが存在する場合、特定のドキュメント文字列でどの関数が参照されているのかを判断するのが難しくなることがあるからです。
Duplicate Headers
場合によっては、ドキュメントに同じ名前のヘッダーが複数含まれていることがありますが、それは異なるページや異なるレベルにあります。重複したヘッダーを @ref
で相互参照できるようにするには、以下の例のように名前を付ける必要があります。
# [Header](@id my_custom_header_name)
...
## Header
... [Custom Header](@ref my_custom_header_name) ...
名前付きヘッダーを囲むリンクは最終文書から削除されます。名前付き @ref ...
のテキストは、参照するヘッダーと一致する必要はありません。名前付き @ref ...
は、名前のないものと同様に、異なるページのヘッダーを参照することができます。
重複したドキュメント文字列の参照は発生しません。なぜなら、同じドキュメント文字列を文書に複数回挿入することは許可されていないからです。
ユーザー定義のヘッダー参照ラベルと内部生成のヘッダー参照ラベルは、競合がある場合にはドキュメント文字列の参照よりも優先されます。
@extref
link
DocumenterInterLinks
pluginを使用すると、Documenterによって生成された他のプロジェクトのドキュメントを相互参照することが可能です。また、Sphinxを使用して、内部参照用の組み込み@ref
リンクに似た@extref
リンクを使用できます。
External Cross-References と documentation of the DocumenterInterLinks
package の詳細については、こちらをご覧ください。
@meta
block
このブロックタイプは、ページの他の場所で使用できるメタデータのキー/値ペアを定義するために使用されます。現在認識されているキー:
CurrentModule
: Documenterが評価するモジュール、例えば、@docs
-blockおよび@ref
-linkです。DocTestSetup
: doctestの前に評価されるコード。Doctestsの下にあるSetup and Teardown Codeセクションを参照してください。DocTestTeardown
: ドクトテストの後に評価されるコード。Doctests の下にある Setup and Teardown Code セクションを参照してください。DocTestFilters
: 予測できない出力を扱うためのフィルター、例えば、44696e6720446f637465737473_40726566
セクションの下にある Filtering Doctests を参照してください。EditURL
: ページを編集できる場所へのリンク。これはデフォルトで.md
ページ自体に設定されますが、ソースが別のものである場合(例えば、.md
ページがドキュメントビルドの一部として生成される場合)、これはローカルリンクまたは絶対URLとして設定できます。Description
: 検索エンジンやリンクのプレビューに表示されるページ固有の説明。makedocs
のサイト全体の説明を上書きします。Draft
: ページのグローバルドラフトモードをオーバーライドするためのブール値。CollapsedDocStrings
: この設定がtrue
に設定されている場合、現在サポートされている出力フォーマット(すなわち、HTML
のみ)では、すべてのドキュメント文字列をデフォルトで折りたたんで表示します。ShareDefaultModule
:true
に設定すると、すべての名前のない@example
、@repl
、および@setup
ブロックは同じ評価サンドボックスモジュールを共有します。これは、チュートリアルのような文書を書くのに便利です。false
(デフォルト)の場合、名前のないブロックはそれぞれ別のサンドボックスモジュールを持ち、そこでコードが評価されます。いずれの場合でも、名前付きブロックは常に独自のサンドボックスモジュールを持ち、同じ名前のブロックによって共有されます。
例:
```@meta
CurrentModule = FooBar
DocTestSetup = quote
using MyPackage
end
DocTestFilters = [r"Stacktrace:[\s\S]+"]
EditURL = "link/to/source/file"
```
@meta
ブロックは常に Main
で評価されることに注意してください。
@index
block
ドキュメントにスプライスされたドキュメント文字列へのリンクのリストを生成します。有効な設定は Pages
、Modules
、および Order
です。例えば:
```@index
Pages = ["foo.md"]
Modules = [Foo, Bar]
Order = [:function, :type]
```
Pages
またはModules
が提供されていない場合、すべてのページまたはモジュールが含まれます。Order
のデフォルトは
[:module, :constant, :type, :function, :macro]
指定されていない場合、Order
と Modules
は @autodocs
block と同様に動作し、指定されたモジュールまたはカテゴリのいずれかに一致しないドキュメント文字列をフィルタリングします。
Pages
、Modules
、および Order
に割り当てられた値は、任意の有効な Julia コードである可能性があり、必要に応じて配列リテラルよりも複雑なものにすることができます。すなわち、
```@index
Pages = map(file -> joinpath("man", file), readdir("man"))
```
ただし、この場合 Pages
はユーザーが期待する順序でソートされていない可能性があることに注意してください。できるだけ配列リテラルを使用するようにしてください。
@contents
block
ドキュメントセクションへのリンクのネストされたリストを生成します。有効な設定は Pages
と Depth
です。
```@contents
Pages = ["foo.md"]
Depth = 5
```
@index
と同様に、Pages
が指定されていない場合はすべてのページが含まれます。デフォルトのDepth
値は2
で、つまりヘッダーのレベル1と2が含まれます。Depth
はUnitRange
も受け入れるため、表示される最小ヘッダー レベルを設定することも可能です。たとえば、Depth = 2:3
を使用すると、レベル2-3のヘッダーのみを含めることができます。
いくつかのケースでは、サイドバーの一部を@contents
ブロックに複製することが望ましい場合があります。コードを重複させずにこれを達成するための可能なパターンは、make.jl
内でグローバル変数を通じてpages
キーワードエントリを定義することです。例えば、
SUBSECTION_PAGES = ["subsection/a.md", "subsection/b.md"]
makedocs(
pages = [
"index.md",
"Subsection" => SUBSECTION_PAGES,
...
その変数は Main
モジュールに存在し、@contents
や他のブロックで再利用できます。例えば、
```@contents
Pages = Main.SUBSECTION_PAGES
```
Documenterは「サブセクション」ページの内容をリストし、それらは常にサイドバーに表示されているのと同じ順序で表示されます。
@example
block
コードブロックを評価し、最後の式の結果を元のソースコードと共に最終文書に挿入します。最後の式が nothing
を返す場合、ブロック全体の stdout
と stderr
ストリームが代わりに挿入されます。最後の行の末尾にあるセミコロン ;
は影響を与えません。
```@example
a = 1
b = 2
a + b
```
上記の @example
ブロックは、以下を最終文書に挿入します。
```julia
a = 1
b = 2
a + b
```
```
3
```
レンダリングされたコードブロックから先頭と末尾の改行が削除されます。各行の末尾の空白も削除されます。
作業ディレクトリ pwd
は、ファイルが書き込まれる build
内のディレクトリに設定され、include
呼び出しのパスは pwd
に対して相対的に解釈されます。これは、makedocs
の workdir
キーワードを使用してカスタマイズできます。
ソースコードの隠蔽
コードブロックには、最終文書に表示する必要のないコンテンツが含まれている場合があります。レンダリングされるべきでない行には # hide
コメントを追加できます。すなわち、
```@example
import Random # hide
Random.seed!(1) # hide
A = rand(3, 3)
b = [1, 2, 3]
A \ b
```
@example
ブロックの各行に # hide
を追加すると、レンダリングされたドキュメントでそのブロックが非表示になります。ただし、結果ブロックはまだレンダリングされます。 @setup
ブロックは、出力を含む全体のブロックを非表示にするための便利なショートハンドです。
空の出力
@example
ブロックが nothing
を返すと、結果ブロックにはブロック全体で生成された stdout
および stderr
ストリームが表示されます。これらが空の場合、結果ブロックは表示されず、レンダリングされたドキュメントにはソースコードブロックのみが表示されます。
名前付き @example
ブロック
デフォルトでは、@example
ブロックは、それぞれの匿名 Module
内で実行され、ブロック間の副作用を避けます。ページ上の異なるブロック間で同じモジュールを共有するには、次の構文を使用して @example
に名前を付けることができます。
```@example 1
a = 1
```
```@example 1
println(a)
```
名前は上記の例のように整数だけでなく、任意のテキストにすることができます。つまり、@example foo
のように。
すべての無名ブロック間でモジュールをデフォルトで共有するには、たくさんの例がすべて関連しているチュートリアルで、ページの @meta
ブロックに ShareDefaultModule = true
を設定できます。
@example
ブロックは、以下の例に示すように、中間的な説明やプロットなどのマルチメディアを必要とするドキュメントを生成する際に便利です。
First we define some functions
```@example 1
using PyPlot # hide
f(x) = sin(2x) + 1
g(x) = cos(x) - x
```
and then we plot `f` over the interval from ``-π`` to ``π``
```@example 1
x = range(-π, π; length=50)
plot(x, f.(x), color = "red")
savefig("f-plot.svg"); nothing # hide
```

and then we do the same with `g`
```@example 1
plot(x, g.(x), color = "blue")
savefig("g-plot.svg"); nothing # hide
```

@example
ブロックは、ファイルがレンダリングされる build
ディレクトリ内で評価されることに注意してください。これは、上記の例では savefig
がそのディレクトリに .svg
ファイルを出力することを意味します。これにより、相対パスを気にすることなく、画像を簡単に参照できるようになります。
If you use Plots.jl with the default backend GR.jl, you will likely see warnings like
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
これを修正するには、環境変数 GKSwstype
を 100
に設定する必要があります。たとえば、GitHub Actionsを使用してドキュメントをビルドする場合、デフォルトのスクリプトを次のように変更できます。
- name: Build and deploy
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token
DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key
GKSwstype: "100" # https://discourse.julialang.org/t/generation-of-documentation-fails-qt-qpa-xcb-could-not-connect-to-display/60988
run: julia --project=docs --color=yes docs/make.jl
代わりに、Julia内でこの環境変数を直接設定することができます。
ENV["GKSwstype"] = "100"
@example
ブロックは自動的に ans
を定義します。これは、Julia REPL のように、最後に評価された式の値にバインドされます。これは、plot
によって返されたオブジェクトを名前付き変数にバインドすることが最終的にレンダリングされたドキュメントで不自然に見えるような次のような状況で便利です:
```@example
using Gadfly # hide
plot([sin, x -> 2sin(x) + x], -2π, 2π)
draw(SVG("plot.svg", 6inch, 4inch), ans); nothing # hide
```

カラー出力
@example
ブロックは、ANSI escape codes を HTML にマッピングすることで、カラー テキスト出力をサポートします。たとえば、このブロック:
```@example
printstyled("Here are some colors:\n"; color=:red, bold=true)
for color in 0:15
print("\e[38;5;$(color);48;5;$(color)m ")
print("\e[49m", lpad(color, 3), " ")
color % 8 == 7 && println()
end
print("\e[m")
```
以下の入力および出力ブロックの結果:
printstyled("Here are some colors:\n"; color=:red, bold=true)
for color in 0:15
print("\e[38;5;$(color);48;5;$(color)m ")
print("\e[49m", lpad(color, 3), " ")
color % 8 == 7 && println()
end
print("\e[m")
Here are some colors:
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
グローバルにカラー出力を無効にするには、ansicolor=false
をDocumenter.HTML
に渡します。また、ブロック内でローカルに無効にするには、ansicolor=false
を使用します。次のように:
```@example; ansicolor=false
printstyled("hello, world"; color=:red, bold=true)
```
@example
ブロックの遅延実行
@example
ブロックは、continued
というキーワード引数を受け入れ、true
または false
に設定できます(デフォルトは false
)。continued = true
の場合、コードの実行は次の continued = false
の @example
ブロックまで遅延されます。これは、ブロック内の式が完了していない場合などに必要です。例:
```@example half-loop; continued = true
for i in 1:3
j = i^2
```
Some text explaining what we should do with `j`
```@example half-loop
println(j)
end
```
ここでは最初のブロックが不完全です – ループが end
を欠いています。したがって、ここで continued = true
を設定することで、最初のブロックの評価を遅らせ、2番目のブロックに到達するまで待ちます。 continued = true
のブロックには出力がありません。
@repl
block
これらは @example
ブロックに似ていますが、各トップレベルの式の前に julia>
プロンプトを追加し、エラーに遭遇しても失敗しません。 # hide
構文は、@example
ブロックと同様に @repl
ブロックでも使用できます。さらに、行の末尾にセミコロン ;
を付けることで、Julia REPL のように出力を抑制します。
```@repl
a = 1
b = 2
a + b
```
生成します
```julia
julia> a = 1
1
julia> b = 2
2
julia> a + b
3
```
そして同様に
```@repl
sqrt(-1)
```
生成します
```julia
julia> sqrt(-1)
ERROR: DomainError with -1.0:
sqrt will only return a complex result if called with a complex argument. Try sqrt(Complex(x)).
```
@repl
ブロックは、@example
ブロックと同様にカラー出力をサポートしています。次のブロック
```@repl
printstyled("hello, world"; color=:red, bold=true)
```
gives
julia> printstyled("hello, world"; color=:red, bold=true)
hello, world
グローバルにカラー出力を無効にするには、ansicolor=false
をDocumenter.HTML
に渡します。また、ブロック内でローカルに無効にするには、ansicolor=false
を使用します。次のように:
```@repl; ansicolor=false
printstyled("hello, world"; color=:red, bold=true)
```
名前付き @repl <name>
ブロックは、名前付き @example <name>
ブロックと同じように動作します。
作業ディレクトリ pwd
は、ファイルが書き込まれる build
内のディレクトリに設定され、include
呼び出しのパスは pwd
に対して相対的に解釈されます。これは、makedocs
の workdir
キーワードを使用してカスタマイズできます。
Julia 1.5は、for
ループなどでグローバル変数を扱う際にソフトスコープを使用するようにREPLを変更しました。Julia 1.5以降でDocumenterを使用する場合、Documenterは@repl
ブロックおよびREPLタイプのドクトテストでソフトスコープを使用します。
@setup <name>
block
これらは @example
ブロックに似ていますが、入力と出力の両方が最終文書から隠されています。これは、隠す必要があるセットアップコードの行がいくつかある場合に便利です。
@example
や@repl
ブロックとは異なり、@setup
は下流の@example <name>
および@repl <name>
ブロックに関連付けるために<name>
属性を必要とします。
```@setup abc
using RDatasets
using DataFrames
iris = dataset("datasets", "iris")
```
```@example abc
println(iris)
```
@eval
block
ブロックの内容を評価し、最後の式が nothing
に評価されない限り、結果の値を最終文書に挿入します。
以下の例では、PyPlotパッケージを使用してプロットを生成し、最終的なドキュメントに表示します。
```@eval
using PyPlot
x = range(-π, π; length=50)
y = sin.(x)
plot(x, y, color = "red")
savefig("plot.svg")
nothing
```

上記の例で nothing
を返す代わりに、Markdown.parse
を通じて新しい Markdown.MD
オブジェクトを返すことができます。これは、ファイル名がブロック自体の評価まで知られていない場合により適切です。
別の例は、CSVやJSONなどの機械可読データ形式からマークダウンテーブルを生成することです。
```@eval
using CSV
using Latexify
df = CSV.read("table.csv")
mdtable(df, latex=false)
```
CSVファイルtable.csvのマークダウンバージョンを生成し、出力形式でレンダリングします。
@eval
ブロック内の最終的な式は、nothing
または有効な Markdown.MD
オブジェクトでなければなりません。他のオブジェクトは警告を生成し、テキスト形式でコードブロックとしてレンダリングされますが、この動作は変更される可能性があり、信頼すべきではありません。
各 @eval
ブロックは、その内容を別のモジュール内で評価することに注意してください。各ブロックを評価する際、現在の作業ディレクトリ pwd
は、ファイルが書き込まれる build
内のディレクトリに設定され、include
呼び出しのパスは pwd
に対して相対的に解釈されます。
ほとんどの場合、@example
は @eval
よりも好まれます。通常のJuliaコードと同様に、eval
は最後の手段としてのみ考慮されるべきであり、@eval
も同じように扱われるべきです。
@raw <format>
block
最終文書にコードをそのまま挿入できるようにします。例えば、出力にカスタムHTMLやLaTeXコードを挿入するためです。
format
引数は必須であり、Documenter は特定のブロックを出力にコピーするかどうかを判断するためにこれを使用します。現在サポートされているフォーマットは html
と latex
で、それぞれのライターによって使用されます。format
が認識されない @raw
ブロックは通常無視されるため、出力フォーマットごとに生のブロックを持つことが可能であり、ブロックが出力に重複することはありません。
次の例は、カスタムスタイルを持つSVGコードを@raw
ブロックを使用してドキュメントに含める方法を示しています。
```@raw html
<svg style="display: block; margin: 0 auto;" width="5em" height="5em">
<circle cx="2.5em" cy="2.5em" r="2em" stroke="black" stroke-width=".1em" fill="red" />
</svg>
```
次のように表示され、コードはHTMLファイルにそのままコピーされます。