LoginSignup
3
1

More than 3 years have passed since last update.

LaTeXでの執筆を助けるスクリプト (随時更新)

Last updated at Posted at 2019-12-12

修正ログ

  • 2019/12/16 1. にwhile文を書くことを追記。(現時点で4.まで書いた。)

これは何?

LaTeXで文章(多分論文)を書くときにあるといいな、というshellスクリプトを書いていきます。みなさん執筆頑張りましょう。

1. 文献情報の人名をまとめて修正する

おなじみの文献ソフトMendeleyを使って、Mendeleyに入っている文献情報を.bibに同期していくことが出来ます。Mendeley中のcitation keyをLaTeXの文中に \cite{CITATION_KEY} として埋め込むと良いです。

しかし、落とし穴がありまして、Mendeley側で文献を更新すると、

GarcíaさんとかMuñozさんのアクセント/アクサンテギュやティルデがおかしなことになります。そこで以下のスクリプトで、毎回直してあげましょう。下記の例では./res/library.bibにMendeleyと同期されている.bibファイルを置き、スクリプトは./bin/フォルダにまとめることにしています。

bin/correct_bibtex.sh
#!/usr/bin/sh
sed -i "s/é/\\\'{e}/g" ./res/library.bib
sed -i "s/á/\\\'{a}/g" ./res/library.bib
sed -i "s/ó/\\\'{o}/g" ./res/library.bib
sed -i "s/ñ/\\\~{n}/g" ./res/library.bib

このbibtex修正スクリプトを毎回手動で実行するのもめんどくさい!という場合には以下のようにwhile文で3分おき実行を仕掛けておきましょう。

# bash dayo
$ three_mins=180; # sleep関数には秒数を投げます。3分=180秒を指定。
$ while true; do ./bin/correct_bibtex.sh; sleep $three_mins; done
# やめるときは `ctrl+c`

2. タイポ絶対○すマン

$ grep $TYPE_STRING *.tex --color # タイポを色付けして表示
$ grep $TYPE_STRING *.tex | head | grep $TYPE_STRING --color # タイポを頭出しして色付け表示

grep-nオプション付けると文字列がヒットした行の行数も示すので、おすすめです。

3. 大文字2文字以上の単語を取ってきてabbreviation listを作る

Nomenclatureとも呼ばれますね、索引です。大文字の略語に正式名称をふる作業で、目視すると抜け漏れが出そうなので機械的にやりましょう。以下のpythonスクリプトを書いて、$ ./bin/list_capitals.py *.tex などとすれば、全ファイル中に含まれる2文字以上大文字が連なる単語を引っ張ってこれます。

bin/list_capitals.py
#!/usr/bin/python
import sys;
import re;
fn=sys.argv[1];
f=open(fn,"r",encoding="UTF-8");
lines=f.readlines();f.close();
sent="".join(lines);
g=re.finditer("[A-Z]{2,}",sent);
print(*[c.group() for c in g])

注意点
- ファイルの文字コードには気をつけてください。上記の例ではUTF-8を指定しています。
- 文字数の制約も自分でしましょう。下から2行目の{2,}という箇所で指定しています。

4. 目次を作る

FILENAME.texをコンパイルするとき、FILENAME.tocというファイルが作られます。このことを利用して、FILENAME.tocのリストから文字列だけ取り出すスクリプトを書けば、目次が秒で作成できます。スクリプトは以下のようになります。awkコマンドという、各行に同じ処理を適用するコマンドが便利です。

$ cat ./bin/list_toc.sh
#!/usr/bin/sh
awk -F\} '{print $2,$3}' main.toc | awk -F\{ '{print $3}'

(随時更新中)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1