TeXの表記揺れをCIで自動チェックする
TeXの表記揺れをCIで自動チェックする
背景
大学のプロジェクト学習という科目の講義で、プロジェクトの報告書を成果物として提出する必要があるため、TeXを用いて複数人で報告書を作成しています。
プロジェクト人数が30人を超え、報告書のページ数も100ページほどあるため、人力で表記揺れをチェックするのはすごく大変です。そのため、今回CIを用いて表記揺れチェックの作業を自動化してみました。
tl;dr
作ったもの: https://github.com/natmark/TeX-Textlint
環境
Mac OS X El Capitan 10.12.4
Node.js 6.9.1
npm 3.10.8
システム構成
GitHubでTeXファイルを管理し、編集分をPushしてプルリクエストを作成する流れにしました。
プルリクエスト作成時にTravis CIのチェックを入れるようにしています。
ファイル構成
TeX-Textlint
├── .travis.yml # travis CIの設定用ファイル
├── .textlintrc # textlintの設定用ファイル
├── main.tex # TeXファイル
├── package.json # パッケージ管理用のファイル
└── prh.yml # 文章チェック用のルールファイル
実装
language: node_js
os: osx
node_js:
- "6"
before_script:
- npm install
script:
- npm run --silent textlint-check
cache:
directories:
- node_modules
TravisCIの準備はこのあたりを参考にしてください
{
"rules" : {
"prh": {
"rulePaths": [
"./prh.yml" //ルールファイルのパス
]
}
}
}
{
"name": "tex-textlint",
"version": "1.0.0",
"description": "TeX auto calibration using textlint + prh",
"main": "index.js",
"config": {
"texpath": "main.tex" //チェック対象ファイルのパス
},
"scripts": {
"textlint-check": "cp ${npm_package_config_texpath} output.txt && $(npm bin)/textlint output.txt && { rm output.txt ; exit 0 ; } || { rm output.txt ; exit 1 ; }",
"textlint-fix": "cp ${npm_package_config_texpath} output.txt && $(npm bin)/textlint --fix output.txt && cp output.txt ${npm_package_config_texpath} && { rm
output.txt ; exit 0 ; } || { rm output.txt ; exit 1 ; }"
},
"author": "",
"devDependencies": {
"textlint": "^8.2.1",
"textlint-rule-prh": "^4.0.1"
}
}
npm(Node Package Manager)を用いて、プレーンテキストとMarkdownファイルのチェックが行えるtextlintと、textlintから校正補助ツールのprhを使用するためのプラグインであるtextlint-rule-prhをインポートしています。
TeXファイル
\documentclass{article}
% 年度の指定
\thisYear{2017}
% プロジェクト名
\jProjectName{サンプルプロジェクト}
% 1.0.1
\subsection{開発体制}
今年度はアプリ班とサーバ班に分かれて開発を行った. また, 開発と並行してビジネスモデルを考案するビジネス班を設置した.
\bunseki{田中}
% 2.0
\section{役割設定}
% 2.1.1
\subsection{プロジェクトリーダーの役割}
プロジェクトリーダは, プロジェクトが円滑に進むように, スケジュールの作成やタスク管理等を行なう.
\bunseki{佐藤}
% 2.2.1
\subsection{アプリケーション開発班の役割}
アプリケーション班は, ios班とandroid班に分かれて作業を行った. 前期はiOS班はSwiftの勉強, Android班はKotlinの勉強をメインに行った.
\bunseki{高木}
% 2.2.2
\subsection{サーバ班の役割}
サーバ班はAPI設計の勉強及び、 Ruby on Railsの勉強をメインに行った。
\bunseki{山田}
% 2.2.3
\subsection{ビジネスモデル班の役割}
ビジネスモデル班では, 既存アプリの調査をメインに行った.
\bunseki{加藤}
上記のようなサンプルを用意しました。
ルールファイル
# prh version
version: 1
rules:
# よくある表記揺れ
- expected: "アプリケーション"
patterns:
- "アプリ(?!ケーション)" # 正規表現も使える
- expected: "iOS"
patterns:
- "IOS"
- "ios"
- expected: "リーダー"
patterns:
- "リーダ(?!ー)" # 正規表現も使える
# 句読点
- expected: ","
patterns:
- "、"
- ","
- expected: "\\."
pattern: "。"
YAMLでルールを記載します。
基本的には
-
expected
に統一する文字 -
patterns
に表記揺れしている文字セット
を記載すればOKです。
特殊なルール
- expected: "リーダー"
patterns:
- "リーダ"
みたいなルールは実行するたびにリーダ
をリーダー
に置換しようとするので、
リーダーーーーーーーーーーー(ry
状態になってしまう。
正規表現が使えるので
- expected: "リーダー"
patterns:
- "リーダ(?!ー)" # 「リーダ」の後ろに伸ばし棒がなければ「リーダー」に置換
とする必要があります。
詳しいルールの例としては下記を参考にしてください。
プルリクエストを投げてみる
Detailsから、CIのチェック状況を確認できます。
もしエラーがあれば、上の画像のように、linter errorが表示され、Travisのビルドが通らないようになっています。
ビルドが通るようになります。
自動チェックと自動校正
ローカル環境で自動チェックと自動校正ができます。
node.js
が必要なので、自分の環境になければ $brew install node
を使用して、node.js
をインストールしてください。
$ cd TeX-Textlint # プロジェクトフォルダに移動
$ brew install node # node.jsが必要
$ npm install # ライブラリの導入
自動でチェックする場合
textlint-check
コマンドを使用することで, prh.yml
のルールに沿って自動チェックができます
$ npm run --silent textlint-check # 自動チェックする場合
自動で修正する場合
textlint-fix
コマンドを使用することで, prh.yml
のルールに沿って自動校正ができます.
$ npm run --silent textlint-fix # 自動校正する場合
まとめ
TeXを複数人で書いている環境で、「うちはこうしてるよ!」というのがあればぜひ教えてください😊
Author And Source
この問題について(TeXの表記揺れをCIで自動チェックする), 我々は、より多くの情報をここで見つけました https://qiita.com/natmark/items/065c02098fd226db7a72著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .