textlint校正ツールの日本語周りスペースルールをカスタマイズする方法

textlint と Re:VIEW

textlint と Re:VIEW

textlint校正ツールで日本語原稿チェック

2018年5月、Windows10のtextlint校正ツールにより技術文書向けルールでRe:VIEW日本語原稿をチェックしました。textlintにRe:VIEWプラグインルールプリセットをインストールして拡張し、ルールをカスタマイズしました。

以下のルールプリセットを設定しました。

textlintのインストールと設定については、下記ブログを参照してください。

textlint校正ツールでRe:VIEW日本語原稿をチェックする方法

技術文書向けルールのカスタマイズは、下記ブログを参照してください。

textlint校正ツールの技術文書向けルールをカスタマイズする方法

日本語周りスペースルール

日本語周りスペースルールは、日本語(全角)と英字(半角)の間のスペースの有無などの日本語周りにおけるルールです。

ブログを書いているときに、日本語と English の間にスペースを入れることがあります。英字が日本語と密接しているとみにくいと思ってスペースを挿入していました。

一般的な書籍を見ると、日本語文章中に出現する英字単語の前後にわずかなすき間がありとても読みやすいです。これは半角スペースよりも幅が短い「1/8スペース」らしいです。電子書籍を作成するときは、英字単語の前後にスペースを入れない方が良いです。

日本語文章中の英字単語とスペース

日本語文章中の英字単語とスペース

Re:VIEWでEPUBを生成すると、英字単語の前後のスペースは原稿のまま出力しました。

EPUB : 日本語文章中の英字単語

EPUB : 日本語文章中の英字単語

Re:VIEWでPDFを生成すると、英字単語の前後は「1/8スペース」となりました。TeX組版処理システムの素晴らしさです。

PDF : 日本語文章中の英字単語

PDF : 日本語文章中の英字単語

Re:VIEWサンプル原稿

textlintで原稿の校正を行うサンプル原稿を作成します。ファイル名はtest.reで、UTF-8エンコードLF改行コードで作成します。このサンプル原稿は、ルールチェックを試すために故意にスペースを混入しています。

= はじめての Re:VIEW
 
あいうABCえお。
あいう ABCえお。
あいうABC えお。
あいう ABC えお。
あいう ABC えお。

Re:VIEWのユーザー インターフェイスは使いやすいです。
ユーザー・インターフェイスと書きます。

素晴らしい! これがRe:VIEWです。
素晴らしい? これがRe:VIEWです。
素晴らしい!これがRe:VIEWです。

全角 と 全角の間には、スペースを入れません。

== Re:VIEW とは

「Re:VIEWを知っていますか」の問いに対して、
「 はい、知っています 」 と言いました。

日本語周りスペースルールのインストール

textlintルールプリセットをローカル(開発環境)にインストールします。日本語周りスペースルールtextlint-rule-preset-ja-spacingを入れます。

技術文書向けルールtextlint-rule-preset-ja-technical-writingもインストールしてください。

> npm install --save-dev textlint-rule-preset-ja-spacing
npm WARN text01@1.0.0 No description
npm WARN text01@1.0.0 No repository field.

+ textlint-rule-preset-ja-spacing@2.0.1
added 8 packages in 3.928s

ルールのカスタマイズ

日本語周りスペースルールプリセットをカスタマイズした.textlintrcを示します。技術文書向けルールプリセットは、全角感嘆符「!?」の使用を許可しました。

{
  "rules": {
      // 技術文書向けの textlint ルールプリセット
      "preset-ja-technical-writing": {
         "no-exclamation-question-mark": {             // 感嘆符「!!??」の使用
            "allowHalfWidthExclamation": false,        // + 半角!
            "allowFullWidthExclamation": true,         // + 全角!
            "allowHalfWidthQuestion"   : false,        // + 半角?
            "allowFullWidthQuestion"   : true          // + 全角?
         },
      },
      // 日本語周りにおけるスペースの有無 ルールプリセット
      "preset-ja-spacing": {
         "ja-space-between-half-and-full-width": {                // 半角文字と全角文字の間にスペースを入れるかどうか
            "space": "never",                                     // + "never" (入れない) or "always" (入れる)
         "ja-space-around-code": false,                           // インラインコードの前後に半角スペースを入れる
         "ja-no-space-between-full-width": true,                  // 全角文字どうしの間にスペースを入れない
         "ja-nakaguro-or-halfwidth-space-between-katakana": true, // カタカナ語間は、中黒または半角スペースで区切る
         "ja-no-space-around-parentheses": true,                  // かっこの外側、内側ともにスペースを入れない
         "ja-space-after-exclamation": true,                      // 文末感嘆符の直後が別文なら全角スペースを入れる
         "ja-space-after-question": true                          // 文末疑問符の直後が別文なら全角スペースを入れる
        }
      }
  },
  "plugins": [
        "review"
    ]
}

サンプル原稿のチェック

textlint 結果

textlint 結果

> textlint test.re

   4:4   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   5:7   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   6:4   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   6:8   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   7:4   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   7:8   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   9:13  error    カタカナ語間は中黒(・)または半角スペースを用いてカタカナ語を区切ります        preset-ja-spacing/ja-nakaguro-or-halfwidth-space-between-katakana
  12:7   ✓ error  文末に感嘆符を使用し、後に別の文が続く場合は、直後に全角スペースを挿入します。  preset-ja-spacing/ja-space-after-exclamation
  13:7   ✓ error  文末に感嘆符を使用し、後に別の文が続く場合は、直後に全角スペースを挿入します。  preset-ja-spacing/ja-space-after-question
  16:3   ✓ error  原則として、全角文字どうしの間にスペースを入れません。                          preset-ja-spacing/ja-no-space-between-full-width
  21:2   ✓ error  かっこの外側、内側ともにスペースを入れません。                                  preset-ja-spacing/ja-no-space-around-parentheses
  21:12  ✓ error  かっこの外側、内側ともにスペースを入れません。                                  preset-ja-spacing/ja-no-space-around-parentheses
  21:14  ✓ error  かっこの外側、内側ともにスペースを入れません。                                  preset-ja-spacing/ja-no-space-around-parentheses

✖ 13 problems (13 errors, 0 warnings)
✓ 12 fixable problems.
Try to run: $ textlint --fix [file]

指摘
4~7 全角文字と半角文字の間にスペースを入れません

3 : あいうABCえお。
4 : あいう ABCえお。
5 : あいうABC えお。
6 : あいう ABC えお。
7 : あいう ABC えお。

3行目はOKですが、4行目から7行目はNGです。


指摘
9 カタカナ語間は中黒(・)または半角スペースを用いてカタカナ語を区切ります

Re:VIEWのユーザー インターフェイスは使いやすいです。
ユーザー・インターフェイスと書きます。

「ユーザー」と「インターフェイス」の間に全角スペースがあり指摘されました。


指摘
12,13 文末に感嘆符を使用し、後に別の文が続く場合は、
直後に全角スペースを挿入します

素晴らしい! これがRe:VIEWです。
素晴らしい? これがRe:VIEWです。
素晴らしい!これがRe:VIEWです。


指摘
16 原則として、全角文字どうしの間にスペースを入れません

全角 と 全角の間には、スペースを入れません。


指摘
21 かっこの外側、内側ともにスペースを入れません

「Re:VIEWを知っていますか」の問いに対して、
「 はい、知っています 」 と言いました。

textlint自動修正

fixable problem指摘は、「–fix」オプションを付けると指摘内容を自動修正します。

> textlint --fix test.re

  21:2   ✔   かっこの外側、内側ともにスペースを入れません。                                  preset-ja-spacing/ja-no-space-around-parentheses
  21:12  ✔   かっこの外側、内側ともにスペースを入れません。                                  preset-ja-spacing/ja-no-space-around-parentheses
  21:14  ✔   かっこの外側、内側ともにスペースを入れません。                                  preset-ja-spacing/ja-no-space-around-parentheses
  16:3   ✔   原則として、全角文字どうしの間にスペースを入れません。                          preset-ja-spacing/ja-no-space-between-full-width
   4:4   ✔   原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   5:7   ✔   原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   6:4   ✔   原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   6:8   ✔   原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   7:4   ✔   原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
   7:8   ✔   原則として、全角文字と半角文字の間にスペースを入れません。                      preset-ja-spacing/ja-space-between-half-and-full-width
  12:7   ✔   文末に感嘆符を使用し、後に別の文が続く場合は、直後に全角スペースを挿入します。  preset-ja-spacing/ja-space-after-exclamation
  13:7   ✔   文末に感嘆符を使用し、後に別の文が続く場合は、直後に全角スペースを挿入します。  preset-ja-spacing/ja-space-after-question

✔ Fixed 12 problems

修正前後の原稿を比較すると、正しく修正したことがわかります。

自動修正の差分

自動修正の差分

まとめ

Windows10にtextlint校正ツールをインストールして、Re:VIEW日本語原稿をチェックできました。

技術文書向けルールと日本語周りスペースルールをインストールして、適切に日本語チェックが行えました。