#はじめに
latexindentというLaTeXのソースを自動で成形してくれるツールがある。
設定の仕方を毎回忘れるのでここに書き留めておく。
#前提
TeX Liveをインストールした状態のWindowsもしくはLinux
##Windows
本来latexindentはPerlで書かれているのでPerl環境が必要だが、TeX Liveにバイナリが同梱されているのでPerl環境なしで動く。
LaTeX-Workshopを使っていたらVSCode上で shift
+alt
+F
すると成形される。
##Linux
Linuxではバイナリが同梱されてないのでPerl環境が必要になる。
# pacman -S perl perl-CPAN
などでインストールする。
この状態で
# latexindent
とするとライブラリがないと怒られるので足りないライブラリを
# cpan Log::Log4perl
などでCPANからライブラリを導入していく。
これに関してはこの記事が詳しい。
#設定
latexindentはデフォルトの設定だとぐちゃぐちゃなインデントをしてしまうので、設定を変更する。
latexindentの設定はdefaultSettings.yaml
というファイルで行う。
##ファイルの場所
###Windows
Windowsでの場合、たいてい設定ファイルは以下の場所にある。
texlive\2020\texmf-dist\scripts\latexindent\defaultSettings.yaml
この場所にない場合、Linuxの項目に示した方法でパスを調べる。
###Linux
Linuxの場合、ディストリビューションによって生成される場所が異なるので
# latexindent
を実行すると作業ディレクトリに生成されるindent.log
を参照してdefaultSetting.yaml
のファイルパスを確認する。
...
INFO: YAML settings read: defaultSettings.yaml
Reading defaultSettings.yaml from /usr/share/texmf-dist/scripts/latexindent/defaultSettings.yaml
...
##defaultSettings.yaml
使いそうな設定項目を取り上げていく。
ごく一部しか取り上げられていないので、詳細は以下のドキュメントを参照してほしい。
https://latexindentpl.readthedocs.io/en/latest/sec-default-user-local.html
###バックアップファイルに関する設定
latexindentは実行するたびmyfile.bak0
myfile.bak1
myfile.bak2
のようにバックアップファイルが生成されるが、
下記の設定項目を1
にすると、一つのバックアップファイルを上書きしていくようになる。
# only one backup per file:
# - if onlyOneBackUp is 0 then, as a safety measure,
# the number on the extension increments by 1 each time:
#
# myfile.bak0, myfile.bak1, myfile.bak2
# - if you set onlyOnebackUp to 1, then the backup file will
# be overwritten each time (not recommended until you trust the script)
onlyOneBackUp: 1
0
にしておいたほうが安全は安全だが慣れてくると邪魔になるので1
にする。
###図表環境におけるインデントの設定
tabularなどでのインデントに関する設定は下記の項目で行う。
# name of code blocks that should have their body aligned at ampersand delimiters
lookForAlignDelims:
tabular:
delims: 1
alignDoubleBackSlash: 1
spacesBeforeDoubleBackSlash: 2 #変えた
multiColumnGrouping: 0
alignRowsWithoutMaxDelims: 1
spacesBeforeAmpersand: 2 #変えた
spacesAfterAmpersand: 1
justification: left
alignFinalDoubleBackSlash: 0
dontMeasure: 0
delimiterRegEx: '(?<!\\)(&)'
delimiterJustification: left
tabularx:
delims: 1
longtable: 1
tabu: 1
array: 1
matrix: 1
bmatrix: 1
Bmatrix: 1
pmatrix: 1
vmatrix: 1
Vmatrix: 1
align: 1
align*: 1
alignat: 1
alignat*: 1
aligned: 1
cases: 1
dcases: 1
listabla: 1
セル間のスペースと最後の\\
とのスペースを1
から2
にしている。1
###itemize環境などにおけるインデントの設定
\item
などの後にインデントがいらない場合は0
に設定する。
# if you want the script to look for \item commands
# and format it, as follows (for example),
# \begin{itemize}
# \item content here
# next line is indented
# next line is indented
# \item another item
# \end{itemize}
# then populate indentAfterItems. See also itemNames
indentAfterItems:
itemize: 1
enumerate: 1
description: 1
list: 1
###章・段落の後のインデントの設定
\section
などのあとにインデントをするかを設定する。
# if you want to add indentation after
# a heading, such as \part, \chapter, etc
# then populate it in here - you can add
# an indent rule to indentRules if you would
# like something other than defaultIndent
#
# you can also change the level if you like,
# or add your own title command
indentAfterHeadings:
part:
indentAfterThisHeading: 1 #変えた
level: 1
chapter:
indentAfterThisHeading: 1 #変えた
level: 2
section:
indentAfterThisHeading: 1 #変えた
level: 3
subsection:
indentAfterThisHeading: 1 #変えた
level: 4
subsection*:
indentAfterThisHeading: 1 #変えた
level: 4
subsubsection:
indentAfterThisHeading: 1 #変えた
level: 5
paragraph:
indentAfterThisHeading: 1 #変えた
level: 6
subparagraph:
indentAfterThisHeading: 1 #変えた
level: 7
デフォルトだと0
だが1
にすると圧倒的に見やすい。
また、インデントを何で行うか以下の項目で設定する。
"\t"
だとタブでインデントが行われる。スペースを使いたい場合は" "
のようにする。
# if you have indent rules for particular code blocks
# then you can populate them in indentRules; for example, you might just want
# to use a space " " or maybe a double tab "\t\t"
indentRules:
myenvironment: "\t\t"
anotherenvironment: "\t\t\t\t"
chapter: "\t" #変えた
section: "\t" #変えた
item: "\t" #変えた
myitem: "\t" #変えた
#おわりに
設定できる項目はこんなものじゃないので
https://latexindentpl.readthedocs.io/en/latest/sec-default-user-local.html
をみて各個人の最高の設定を作り出して最高のLaTeXライフを送りましょう。
-
しかし日本語文字が含まれていると設定しても結局インデントがずれる ↩