tex文章を推敲するためにtextlintを導入する (初心者向け)。

# texにlint 導入体験記
[HCB Advent Calendar 2021](https://qiita.com/advent-calendar/2021/hcb-2021)
アドベントカレンダー4日目の記事になります。
急遽他の人が今日の記事を書けないと連絡してきたので、自分の出来合いの記事を4日目とします。

自己レビューや他人のドキュメントのレビュー・推敲時間を削減するために、textlintを導入しました。
導入のついでにtextlint (tex用) 導入の手順を記事として書きました。

### 目次
- インストールコマンド
- 文章校閲ルールの設定
- 文章校閲 (textlintを動かす)
- 表記ゆれ対策


## インストールコマンド
以下のコマンドでtextlintとtexlintのルール(工業系用)、tex用のパッケージをインストールします。

```
mkdir newフォルダー名
cd newフォルダー名
npm init -y
npm install -D textlint
npm install --D textlint-rule-preset-ja-spacing textlint-rule-preset-ja-technical-writing
npm install textlint-plugin-latex2e
```

## 文章校閲ルールの設定
校閲用のルールをtextlintに設定していく。
まず以下のコマンドで設定ファイル(.textlintrc)を作成する

```
// newフォルダー名 (新しく作成したフォルダ) の中で操作 
npx textlint --init
```
ここまでで基本的な内容の校閲設定は終了しています。以下に自分用の追加設定を書いておきます。

```
{
  "filters": {},
  "rules": {
    "preset-ja-spacing": true,
    "preset-ja-technical-writing": {
      "ja-no-mixed-period": {
        "periodMark": "．"
      },
      "ja-space-between-half-and-full-width": {
        "space": "always",
        "exceptPunctuation": true,
      },
      "max-ten": {
        "touten": "，",
        "kuten": "．"
      }
    },
  },
  "plugins": [
    "latex2e"
  ]
}
```

### 文章校閲 (textlintを動かす)
以下のコマンドを実行する

```
npx textlint 推敲したい文章のファイル名
```

多分以下のような形で校閲結果を出力してくれます。

```
   56:12   ✓ error  一つ => 1つ
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。  ja-technical-writing/arabic-kanji-numbers
   56:112  error    Line 56 sentence length(161) exceeds the maximum sentence length of 100.
Over 61 characters                                        ja-technical-writing/sentence-length
   56:177  error    一つの文で"，"を4つ以上使用しています
            ja-technical-writing/max-ten
   84:134  ✓ error  二つ => 2つ
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。  ja-technical-writing/arabic-kanji-numbers
  135:95   ✓ error  一つ => 1つ
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。  ja-technical-writing/arabic-kanji-numbers
  137:1    error    Line 137 sentence length(172, original:328) exceeds the maximum sentence length of 100.
Over 72 characters                         ja-technical-writing/sentence-length
  161:75   error    文末が"．"で終わっていません。
            ja-no-mixed-period
  191:9    error    一文に二回以上利用されている助詞 "は" がみつかりました。
```

以上、メモ書きのようなものですが、textlint (tex用) の導入手順になります。

## 表記ゆれ対策
textlintを使った表記ゆれの対策方法を書きます。
以下のコマンドを実行します。

```
// newフォルダー名 (新しく作成したフォルダ) の中で操作 
npm install -D textlint-rule-prh
npx prh --init　// prh.ymlファイルが作成される
```

以下のルールを追加 (.textlintrc内)

```
{
  "filters": {},
  "rules": {
    "preset-ja-spacing": true,
    "preset-ja-technical-writing": {
      ...
    },
// ----追加部分----
    "prh": {
      "rulePaths": [
        "./prh.yml" // パスはymlファイルに適宜合わせる
      ]
    }
// ----ここまで追加部分----
  },
  "plugins": [
    "latex2e"
  ]
}
```

作成されたprh.ymlに表記ゆれ校閲のためのルールを追加します。以下が自分が修正・追加した表記ゆれ校閲のルールです。設定した後は `npx textlint ファイル名` で校閲できます。

```
rules:
  # patternには正規表現が利用可能
  - expected: ($1)
    pattern:  /（([\S]+)）/
    specs:
      # 半角括弧を全角括弧へ
      - from: （そのとおり）
        to:   (そのとおり)

  - expected: 実施する or 取り組む or Aする
    patterns:
      - を行った
      - を行う
      - をする
      - をした
      - を行
      - 行う

  - expected: Web
    patterns:
      - WEB
      - web
```

# 最後に
明日のAddvent calendarは @QT21-004-2_HCB がハッカソンについての記事を書くので、是非そちらも見てください。 m ( _ _ ) m