
# オプション

すべてのエントリポイント（`codeToHtml`、`codeToTokens`、`codeToTokensResult`、`codeToHast`）は、2番目の引数として同じオプション配列を受け取ります。必須なのは`lang`とテーマのみです。

## `lang`

**必須。** トークン化する言語のIDまたは別名です（`php`、`ts`、`js`、`rust`、`python`、`html`など）。特別な値`'ansi'`を指定すると、文法の代わりにターミナルのエスケープシーケンスを強調表示します（[ANSI](https://shikiphp.inline0.dev/ja/docs/ansi)を参照）。

```php
['lang' => 'php']
```

## `theme`

テーマのIDを1つ指定します。`themes`を指定する場合を除き、必須です。

```php
['lang' => 'php', 'theme' => 'github-dark']
```

## `themes`

デュアル（または複数）テーマの出力に使う、キーとテーマIDのマップです（CSSの変数経由）。`theme`を指定する場合を除き、必須です。

```php
['lang' => 'ts', 'themes' => ['light' => 'github-light', 'dark' => 'github-dark']]
```

## `defaultColor`

`themes`内のどのキーをインラインのデフォルト色にするかを指定します（他のキーは`--shiki-<key>` CSS変数になります）。デフォルトは`'light'`です。`false`に設定すると、インラインのデフォルト色を出力せず、変数のみを出力します。色をすべてCSSから制御する場合に便利です。

```php
['themes' => ['light' => '…', 'dark' => '…'], 'defaultColor' => 'dark']
```

## `transformers`

パイプラインを通して適用する`Shikiphp\Transformer\Transformer`オブジェクトのリストです。[トランスフォーマー](https://shikiphp.inline0.dev/ja/docs/transformers)を参照してください。

```php
use Shikiphp\Transformer\Notation\NotationHighlight;

['transformers' => [new NotationHighlight()]]
```

## `decorations`

行や文字の位置を指定して、ソース内の任意の範囲にクラスや属性を適用します。各装飾は`{start, end, properties}`で、位置は`{line, character}`（0から始まる）です。

```php
['decorations' => [
    [
        'start'      => ['line' => 0, 'character' => 0],
        'end'        => ['line' => 0, 'character' => 5],
        'properties' => ['class' => 'highlight'],
    ],
]]
```

## `colorReplacements`

出力内の色を置き換えます。文字列の項目は色を全体的に置き換え、テーマ名をキーとするネストした項目はそのテーマにのみ適用されます。

```php
['colorReplacements' => [
    '#ffffff'      => '#f8f8f2',          // global
    'github-dark'  => ['#24292e' => '#000'], // only in github-dark
]]
```

## `structure`

`'classic'`（デフォルト）は`pre > code > span.line > span`構造全体を出力します。`'inline'`は、行区切りを含むトークンの範囲だけを出力し、折り返し`pre`/`code`を付けません。インラインのコード断片に便利です。

```php
['structure' => 'inline']
```

## `tabindex`

`<pre>`要素の`tabindex`属性です。デフォルトは`0`です。省略するには`false`を渡します。

```php
['tabindex' => false]
```

## `cssVariablePrefix`

デュアルテーマのCSS変数に使うプレフィックスです。デフォルトは`'--shiki-'`です。

```php
['cssVariablePrefix' => '--my-']
```

## `mergeWhitespaces`

空白トークンの処理方法を制御します。`true`（デフォルト）は空白のみのトークンを次のトークンにまとめます。`'never'`は各トークンの先頭と末尾の空白を独立したトークンに分けます。`false`はトークンを変更しません。

```php
['mergeWhitespaces' => 'never']
```

## `tokenizeMaxLineLength`

この長さ以上の行はトークン化をスキップし、単一のプレーンなトークンとして出力します。単位はUTF-16コード単位です。デフォルトでは上限はありません。極端に長い単一行入力への対策です。

```php
['tokenizeMaxLineLength' => 1000]
```

## `meta`

トランスフォーマーコンテキスト経由でトランスフォーマーに渡す任意のメタデータです。たとえば、コードフェンスのメタ文字列は[`MetaHighlight`](https://shikiphp.inline0.dev/ja/docs/transformers#metahighlight)および[`MetaWordHighlight`](https://shikiphp.inline0.dev/ja/docs/transformers#metawordhighlight)で使用されます。

```php
['meta' => ['__raw' => '{1,3-5}']]
```

## `grammarState`

トークン化を再開する位置を示す`Shikiphp\GrammarState`（`getLastGrammarState`から取得）です。引き継いだ`lang`とtheme(s)は一致している必要があります。[`getLastGrammarState`](https://shikiphp.inline0.dev/ja/docs/api#shikiphpgetlastgrammarstate)を参照してください。
