初心者に優しいTeXworks?
TeXworks はTeX Live にも収録されているTeX 用エディタである.
デフォルトの状態でタイプセットまでの一連を実行できるように設定されており非常に便利で,TeX 初心者はこのエディタを利用してTeX の第一歩を送ることになると思われる.
しかしながら,デフォルトの設定が初心者に優しい設定になっているかと思うと,そうではないように思われる.
そこで,以下について設定の変更を行ってみたい.(※は発展的な内容)
これらによって,少しだけ初心者に優しいものになると思われる.
- 公式ページ
- リポジトリ
■ 前提
TeXworks はTeX Live から導入したものを想定します.(その他での導入は適宜ファイルディレクトリを置き換える必要が生じます)
- Windows10
- TeX Live
- TeXworks 0.6.6
- 日本語のLaTeX 文書だけを作成する
■ 一般設定
一般設定はGUI でも簡単に設定できるので,設定ファイルを編集することはしない.
メニューバーの編集> 設定
から設定ウィンドウが開かれる.
最低でも以下のような設定にはしておきたい.いくつかはデフォルトのままのものもある.
- エディタ
- フォント: Consolas
- フォントサイズ: 12pt (適宜)
- 行番号の表示: ON
- 行の折り返し: ON
- 構文の色付け: LaTeX
- 自動インデント: Whitespace only
- 引用符の入力支援: TeX ligatures
- エンコード: UTF-8
- 現在のカーソルのある行をハイライトする: ON
- カーソル幅: 3px
- タイプセット
- デフォルトのタイプセット方法: upLaTeX (ptex2pdf)
- コンソール出力の表示: 成功時に隠す
これらを設定後,TeXworks を再起動するとこれらが適応される.
フォントに関しては0(ゼロ)
, O(オー)
や1(イチ)
, l(エル)
などの見分けがつきづらいものの,# シンタックスハイライトを強化する場合には以下のようなフォントを利用しても問題ないだろう.
あるいは新たに# フォントを導入しても良い.
- MS ゴシック
- BIZ UD ゴシック
- UD デジタル教科書体 N-B
ちなみにこれの設定ファイルは以下のディレクトリにある.直接編集しても良いがすこし面倒くさい.GUI の方が楽.
C:\<USER>\<user_name>\.texlive20**\texmf-config\texworks\TUG\TeXworks.ini
■ 自動補完とキーボードショートカット
以下のディレクトリにshortcuts.ini
ファイルを作成することでキーボードショートカットを定義することが出来る.
C:\<USER>\<user_name>\.texlive20**\texmf-config\texworks\configuration\shortcuts.ini
キーボードショートカットは事前に定義されているアクションに対して割り当てるため,shortcuts.ini ファイル内では以下のような記法となっている.
Action=Keyboard_shortcuts
▼ 自動補完
自動補完のキーボードショートカットはデフォルトで設定されていない.以下のようにしておく.
(どうして自動補完のキーボードショートカットはデフォルトで設定されていないのだろう)
shortcuts.ini
actionNext_Completion=Tab
これによって,補完機能をTab
キーで操作出来るようになる.
例 :
xa
↓
[Tab]
↓
\alpha
この他の補完機能のプレフィックスについては以下のリンクを参照のこと.
また,このような補完機能を利用するとき,非常に奇妙な•
が残る場合がある.これはTeXworks エディタ内でCtrl+Tab
などとするとここにジャンプすることを想定しているためである.
cf. A short manual for TeXworks A. Customizing TeXworks - A.2 Keyboard shortcuts
Ctrl+Tab
せずに大量に残ってしまった場合には置換を利用して適当に削除しておくと良いだろう.
また,これらの自動補完はtw-latex.txt で定義されている.
以下の記事からカスタマイズの方法がわかる.
▼ その他のキーボードショートカット
cf. A short manual for TeXworks A.2.1 Predefined shortcuts
キーボードショートカットは上で定義したようなアクションにショートカットを割り当てる形で定義されている.
ただし,すでに設定されているキーボードショートカットを上書きすることは出来ず,まったく異なる組み合わせである必要があるようだ.
キーボードショートカットの詳細は長いので折りたたみにしておきます.
For working in the source window: Description をスネークケースにして 例 Moving the cursor (hold
デフォルトのキーボードショートカット (折りたたみ)
Shortcut
Description
Ctrl+’
Go to Preview
Ctrl+=
Show Selection
Ctrl+[
Unindent
Ctrl+\
Hide Console Output
Ctrl+]
Indent
Ctrl+A
Select All
Ctrl+B
Balance Delimiters
Ctrl+C
Copy
Ctrl+E
Copy to Find
Ctrl+F
Find...
Ctrl+G
Find Again
Ctrl+H
Find Selection
Ctrl+L
Go to Line...
Ctrl+N
New
Ctrl+O
Open...
Ctrl+Q
Quit TeXworks
Ctrl+R
Replace...
Ctrl+S
Save
Ctrl+T
Typeset
Ctrl+V
Paste
Ctrl+W
Close
Ctrl+X
Cut
Ctrl+Z
Undo
Ctrl+Shift+C
Insert Citations...
Ctrl+Shift+E
Copy to Replace
Ctrl+Shift+N
New from Template...
Ctrl+Shift+R
Replace Again
Ctrl+Shift+S
Save As...
Ctrl+Shift+Z
Redo
Ctrl+Shift+[
Uncomment
Ctrl+Shift+]
Comment
Ctrl+Alt+S
Save All
action
に続ければ元のアクションとなる.
: Ctrl+E
: Copy to Find → actionCopy_to_Find
Shift
to select):
Shortcut
Description
→
1 character right
Ctrl+→
1 word right
←
1 character left
Ctrl+←
1 word left
↑
1 line up
↓
1 line down
PgUp
1 screen up
PgDown
1 screen down
Home
Begin of line
Ctrl+Home
Begin of document
End
End of line
Ctrl+End
End of document
未定義のアクションもある.これらはデフォルトで定義されていないため,適宜定義して利用すると良いだろう.
また,利用できる 中間ファイルの削除( shortcuts.ini
未定義のアクション (折りたたみ)
Type
Action
Edit
actionPreferences
actionClear
actionTo_Lowercase
actionTo_Uppercase
actionNone
actionToggle_Case
File
actionClear_Recent_Files
actionRemove_Aux_Files
actionRevert_to_Saved
Format
actionApply_to_Selection
actionLine_Numbers
actionAutoIndent_None
actionSmartQuotes_None
actionSyntaxColoring_None
actionFont
actionHard_Wrap
actionWrap_Lines
Help
actionAbout_TW
actionSettings_and_Resources
actionGoToHomePage
actionWriteToMailingList
Scripts
actionAbout_Scripts
actionShow_Scripts_Folder
actionManage_Scripts
actionUpdate_Scripts
Window
actionAuto_Follow_Focus
actionSide_by_Side
actionPlace_on_Left
actionStack
actionPlace_on_Right
actionTile
Ctrl
に続くアルファベットは以下の文字のみである.Ctrl+Shift+<Alph>
やCtrl+Alt+<Alph>
などとする方が競合しづらいだろう.D I J K M P U Y
actionClear_Recent_Files
) や最近開いたファイルの履歴削除(actionRemove_Aux_Files
) のアクションもあるので,これらをキーボードショートカットにしておいても良いだろう.
actionClear_Recent_Files=Ctrl+Alt+C
actionRemove_Aux_Files=Ctrl+Alt+R
■ タイプセット方法
初心者にとってデフォルトのタイプセット方法は以下のような点が優しくないと思われる.
- 対話モード
↳ TeX とお話ししながらタイプセットしたくない - デフォルトに構成されるタイプセット方法が多い
↳ 使うもののみにしておきたい
↳ 日本語LaTeX を利用するだけならpdfLaTeX やXeLaTeX は滅多に使わない
したがって,これらを以下のような設定に変更する.
- 非対話モードに変更 (
-interaction=nonstopmode
)
↳ エラーが含まれていた場合はコンソール部分にエラーや警告が記述される - 日本語LaTeX のみ (mendex 等については省略しました)
- LuaLaTeX
- ptex2pdf(upLaTeX + dvipdfmx)
- BibTeX
- upBibTeX
これらを変更するには以下のファイルを編集する.
C:\<USER>\<user_name>\.texlive20**\texmf-config\texworks\configuration\tools.ini
このファイルを以下のように書き換える.
ついでにllmk も利用できるようにしています.これはLaTeX エンジンではなく,ビルドツールになります. もちろん,latexmk やcluttex でも良い.個人的にllmk が好きなので入れました.
tools.ini (折りたたみ)
[001]
name=LuaLaTeX
program=lualatex.exe
arguments=$synctexoption, "-interaction=nonstopmode", $fullname
showPdf=true
[002]
name=upLaTeX (ptex2pdf)
program=ptex2pdf.exe
arguments=-u, -l, -ot, $synctexoption, "-kanji=utf8", "-interaction=nonstopmode", $fullname
showPdf=true
[003]
name=BibTeX
program=bibtex.exe
arguments=$basename
showPdf=false
[004]
name=upBibTeX
program=upbibtex.exe
arguments="-kanji=utf8", $basename
showPdf=false
[005]
name=llmk
program=llmk.exe
arguments=$fullname
showPdf=true
llmk については以下の記事を参照すると良い.
念のため記法についても記載しておく.
1つのショートカットは以下のように記述される. AdvancedTypesettingTools # Defining new typesetting tools · TeXworks/texworks Wiki 余力があれば好きなようにカスタマイズ出来るようになる良いだろう.
tools.ini の記法 (折りたたみ)
[<Three-digit_number>]
name=<Compile_method_name>
program=<Compile_command>
arguments=<Compile_command_args>
showPdf=<true_or_false>
arguments
では以下のようなオプションを利用することが出来る.
Option
Description
$synctexoption
-synctex=1
に展開
$fullname
ファイルの絶対パス
$basename
拡張子を除いた絶対パス
$suffix
拡張子
$directory
ファイルを含むディレクトリの絶対パス
もちろんGUI で編集しても良いが,全体を編集するには労力が大きすぎる.ファイルを編集した方が楽だろう.
■ シンタックスハイライト
デフォルトのシンタックスハイライトは非常にシンプルになっている.
シンプルさ故にちょっとチープな感じもする.
以下のファイルを書き変えることでシンタックスハイライトを変更することが出来る.
C:\<USER>\<user_name>\.texlive20**\texmf-config\texworks\configuration\syntax-patterns.txt
今回はLaTeX のみについて以下の点を変更を加えた.
- ハイライトテーマを追加
- ハイライトを追加
- 数字
- 括弧
- いくつかの記号
- 余分な空白文字に赤下線を追加
- 空白文字のみの行
- 行末の空白文字
- すべての全角スペース
適用すると一例として以下のような感じになる.フォントはConsolas になっている.
さまざまなテーマを作成してみた.以下のページを参考に配色を決めた. 複数作成したため,メニューバーのから おそらく読み取り専用ファイルになっているが,プロパティから読み取り専用を解除すれば問題ない. syntax-pattern.txt (一応ライセンスも付与)
syntax-pattern.txt (折りたたみ)
フォーマット> 構文の色付け
から順に変更することが出来る.また,設定を保存する場合はメニューバーの編集> 設定
からエディタの「構文の色付け」を選択することが出来る.
デフォルトのシンタックスハイライトに加えて,5つのテーマを作成してみた.これらには,かなり下手なハイライト設定も含まれている.
# Copyright 2021 Yarakashi Kikohshi
# Released under the MIT License
# https://opensource.org/licenses/mit-license.php
# ----- ----- -----
# TeXworks: Patterns for syntax coloring
# Each entry consists of three whitespace-separated fields:
# <style> <spell?> <regex>
# <style> is a combination of color and style flags
# Valid syntax:
# <fgcolor>
# <fgcolor>/<bgcolor>
# ;<fontflags>
# <fgcolor>;<fontflags>
# <fgcolor>/<bgcolor>;<fontflags>
#
# The color fields <fgcolor> and <bgcolor> are either:
# *) a color name from the list defined in the SVG standard;
# see https://www.w3.org/TR/SVG11/types.html#ColorKeywords
# *) a hexadecimal color value of the form #rrggbb; note that if this is used at
# the beginning of a line, a space " " must be added in front of it so the
# line is not interpreted as a comment (e.g., " #aabbcc" instead of "#aabbcc")
#
# The <fontflags> field is a combination of the letters
# B (bold)
# I (italic)
# U (underlined)
# <spell> is a flag controlling whether this style is subject to spell-checking;
# "Y" or "y" for yes, "N" (or anything else, actually) for no.
# <regex> is the regular expression to match.
# Note that order of rules may be important if several rules could match at the same position;
# this is why the generic "control sequence" rule comes AFTER the specific \begin/\end one.
[LaTeX]
# Default theme
# special characters
darkred N [$#^_{}&]
# LaTeX environments
darkgreen N \\(?:begin|end)\s*\{[^\}]*\}
# LaTeX packages
darkblue N \\usepackage\s*(?:\[[^\]]*\]\s*)?\{[^\}]*\}
# control sequences
blue N \\(?:[\p{L}@]+|.)
# comments
red Y %.*
[LaTeX: Visual Studio Code]
# Visual Studio Code theme
# special characters
#C586C0 N [\$#\^\_\+\-&]
# line breaks
#C586C0 N \\\\
# brank
#F44747;U N ^\s+$
#F44747;U N (?=.)+\s+$
#F44747;U N
# numeric
#B5CEA8 N [0-9]
# LaTeX environments
#9CDCFE N (?<=\\begin\{|\\end\{).*(?=\})
#DCDCAA N \\(?:begin|end)
# LaTeX packages
#DCDCAA N (?<=\\documentclass\[|\\usepackage\[)(?:.*|\n(?:.*\n)*\s?)(?=\])
#C586C0 N \\(?:documentclass|usepackage)
# control sequences
#569CD6 N \\(?:[\p{L}@]+|.)
# brace
#4EC9B0 N [\{\}\[\]\(\)]
# comments
#6A9955;U Y %.*
[LaTeX: Monokai theme]
# Monokai theme
# https://kolormark.com/brands/monokai
# special characters
# Monokai Blue
#66D9EF N [\$#\^\_\+\-&]
# line breaks
# Monokai Blue
#66D9EF N \\\\
# brank
#F44747;U N ^\s+$
#F44747;U N (?=.)+\s+$
#F44747;U N
# numeric
# Monokai Green
#A6E22E N [0-9]
# LaTeX packages
#595959;I N (?<=\\documentclass\[|\\usepackage\[)(?:.*|\n(?:.*\n)*\s?)(?=\])
# Monokai Pink
#F92672 N \\(?:documentclass|usepackage)
# LaTeX environments
#595959;I N (?<=\\begin\{|\\end\{).*(?=\})
# Monokai Pro Pink
#FF6188 N \\(?:begin|end)
# control sequences
# Monokai Pro Purple
#AE81FF N \\(?:[\p{L}@]+|.)
# brace
# Monokai Orange
#FD971F N [\{\}\[\]\(\)]
# comments
#75715E;U Y %.*
[LaTeX: Bluloco theme]
# Bluloco theme
# https://github.com/uloco/theme-bluloco-light
# special characters
#DF631C N [\$#\^\_\+\-&]
# line breaks
#DF631C N \\\\
# brank
#F44747;U N ^\s+$
#F44747;U N (?=.)+\s+$
#F44747;U N
# numeric
#CE33C0 N [0-9]
# LaTeX packages
#7A82DA N (?<=\\documentclass\[|\\usepackage\[)(?:.*|\n(?:.*\n)*\s?)(?=\])
#D52753 N \\(?:documentclass|usepackage)
# LaTeX environments
#A05A48 N (?<=\\begin\{|\\end\{).*(?=\})
#275FE4 N \\(?:begin|end)
# control sequences
#23974A N \\(?:[\p{L}@]+|.)
# brace
#823FF1 N [\{\}\[\]\(\)]
# comments
#A0A1A7 Y %.*
[LaTeX: BatCat Design]
# BatCat Design theme
# https://kolormark.com/brands/badcat
# special characters
#FF2D96 N [\$#\^\_\+\-&]
# line breaks
#FF2D96 N \\\\
# brank
#F44747;U N ^\s+$
#F44747;U N (?=.)+\s+$
#F44747;U N
# numeric
#D00D1E N [0-9]
# LaTeX packages
#DEFACE N (?<=\\documentclass\[|\\usepackage\[)(?:.*|\n(?:.*\n)*\s?)(?=\])
#7C3583 N \\(?:documentclass|usepackage)
# LaTeX environments
#DEFACE N (?<=\\begin\{|\\end\{).*(?=\})
#AC1D1C N \\(?:begin|end)
# control sequences
#0FF1CE N \\(?:[\p{L}@]+|.)
# brace
#FACADE N [\{\}\[\]\(\)]
# comments
#BEEBEE Y %.*
[LaTeX: PatternCrew]
# PatternCrew theme
# https://kolormark.com/brands/patterncrew
# special characters
#711271 N [\$#\^\_\+\-&]
# line breaks
#711271 N \\\\
# brank
#F44747;U N ^\s+$
#F44747;U N (?=.)+\s+$
#F44747;U N
# numeric
#F47471 N [0-9]
# LaTeX packages
#4A4C49 N (?<=\\documentclass\[|\\usepackage\[)(?:.*|\n(?:.*\n)*\s?)(?=\])
#711271 N \\(?:documentclass|usepackage)
# LaTeX environments
#4A4C49 N (?<=\\begin\{|\\end\{).*(?=\})
#1E382D N \\(?:begin|end)
# control sequences
#007D8C N \\(?:[\p{L}@]+|.)
# brace
#DC000C N [\{\}\[\]\(\)]
# comments
#96ACA4 Y %.*
[ConTeXt]
# special characters
darkred N [$#{}&]
# 'other' special characters
darkblue N [=\[\]]
# mathematical operations
gray N [\-+/^_]
# start/stop
darkgreen;B N \\(?:start|stop)[A-Za-z]+
# control sequences
blue;B N \\(?:[\p{L}@]+|.)
# comments
red Y %.*
[BibTeX]
# entries
darkgreen N @[^{]+
# comments
red Y %.*
# keys
blue N [a-zA-Z]+(?=\s*=)
[LaTeX DTX]
# comments
red Y \^\^A.*
# Guards
darkviolet N ^%<@@=[^>]*>
limegreen N ^%<\*[^>]*>
crimson N ^%</[^>]*>
brown N ^%<<
orange N ^%<[^>]*>
# special characters
darkred N \^\^\^\^\^[0-9a-z]{5}
darkred N \^\^\^\^[0-9a-z]{4}
darkred
N \^\^\^[0-9a-z]{3}
darkred N \^\^[0-9a-z]{2}
darkred N [$#^_{}&]
gray N ^%%.*
gray N ^%
# Macrocode
green N \\(?:begin|end)\{macrocode\}
# LaTeX environments
darkgreen N \\(?:begin|end)\s*\{[^}]*\}
# control sequences
blue N \\(?:[\p{L}@:_]+|.)
[Lua]
# Comments (single line only)
red Y --.*
# Strings
green N (?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))
green N \[(=*)\[[\s\S]*(?:\]\1\]|$)
# Keywords
blue;B N
\b(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b
# Numbers
darkblue N [+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))
# other possibilities to be added....
# [Metapost]
# etc
syntax-pattern.txt にも記法が記載されているが,改めて記載しておく.
基本構文は以下のようにする.これらの要素はタブで区切る. 例 § Style スタイルでは文字色( Hex 値の場合は半角スペース1つ空けてから行を始める. § Spell スペルチェックをするかどうかを決める. § Regex 正規表現でハイライトを与える構文を定義する.
syntax-pattern.txt の記法 (折りたたみ)
<style> <spell?> <regex>
#
が行頭にある行はコメントアウトされる.
: %
より右側の文字列に下線を付けてMonokai Pro Purple にする# Monokai Pro Purple
#AB9DF2;U Y %.*
<fgcolor>
)とフォントスタイル(<fontflags>
)を指定することが出来る.いずれか一方でも機能する.
これらは;
で区切られる.<fgcolor>
;<fontflags>
<fgcolor>;<fontflags>
<fgcolor>
はHex 値かSVG 標準の予約済み色名(以下リンク参照) を利用できる.
<fontflags>
では太字,斜体,下線を与えることが出来る.
<fontflags>
Description
B
bold
I
italic
U
underlined
"Y" or "y" for yes, "N" (or anything else, actually) for no.
■ フォント
デフォルトではMS UI Gothic
に設定されている.上ではConsolas
に変更している.
しかし,Consolas
が対応しているのは欧文のみで和文には対応していない.すこし不格好だとも思われる.
このような場合には日本語対応のプログラミング用フォントを導入して変更しても良いだろう.
Windows では日本語対応のプログラミング用フォントが含まれていないので,適宜ダウンロードして導入する必要がある.
このようなフォントに変更するメリットは以下のようなものがある.
- 文字が紛らわしくない (
1
とl
や0
とO
など) - 全角スペースを視認できる
本記事ではCica をおすすめしておく.
以下のダウンロードページからZip ファイルをダウンロード,解凍,インストールすれば良い.これで利用できるようになる.
この他に,MyricaM,白源などがある.
Ricty Diminished もあるが,生成が面倒なので省略.
インストールしたのちに編集> 設定> エディタ
から変更することが出来るようになる.
■ その他
マニュアル
マニュアルはTeXworks を立ち上げて,メニューバーのヘルプ>A short manual for TeXworks
から見ることが出来る.
このファイルは以下のディレクトリに格納されている.
フランス語のマニュアルもあるので,フランス語の方が読みやすい方はそちらを見ると良い.
%TEXLIVE%\20**\tlpkg\texworks\texworks-help\TeXworks-manual\en\index.html
本記事の参考はすべてこのマニュアルになる.
検索と置換
検索と置換にはいくつかのキーボードショートカットが与えられている.
Shortcut | Description |
---|---|
Ctrl+F |
検索 |
Ctrl+R |
置換 |
Ctrl+G |
繰り返し検索 |
Ctrl+Shift+R |
繰り返し置換 |
これらの検索はカーソルより下側のものを検索するようになっている.ドキュメント全体を検索したい場合は「検索結果をすべて表示する(a)」にチェックを入れておくと良いだろう.
また,検索と置換には正規表現を利用することも出来る.「正規表現(R)」にチェックを入れると利用できる.ただし,正規表現の詳細については記載を避ける.
cf. A short manual for TeXworks B. Regular expressions
起動が遅い
起動が遅い場合,「最近開いた文書」を記録していることが良くない影響を及ぼしているようだ.
メニューバーのファイル> 最近開いた文書
から最近開いたファイルの一覧をクリア
すれば良いだろう.
あるいは,以下のファイルからrecentFiles
の項目を削除すれば良い.
C:\<USER>\<user_name>\.texlive20**\texmf-config\texworks\TUG\TeXworks.ini
記録しない設定は存在しないようだ.
ダークテーマ
TeXworks はダークテーマを搭載していない.
そのため,デフォルトでイメージを選択出来るようにする方が良いというIssue は上がっている.これが実現されればより平易にイメージを変更することが出来るが,実際はまだそうはいかない.
Implement dark mode · Issue #932 · TeXworks/texworks - GitHub
しかしながら,頑張ればダークテーマにすることも出来る.
頑張ってみた ↓
余談
VSCode で編集できなくなったときのためにTeXworks が使い物になるか試していたところ,いくつか初心者向きでないような設定があると感じたので記事にしてみた.
たぶんこれで初心者に優しいTeXworks になっていると思われる.
TeX 用エディタで対話モードに対応しているものはTeXworks くらいなのではないかと思っているのだが,世の中で対話モードを利用してLaTeX している人がどれくらいいるのだろうと思う.
また,どれくらいの人がTeX とおしゃべり出来るのだろう.(誰も教えてくれたことなかった記憶)
ダークテーマがデフォルトで設定されていない点はエディタとしてかなり痛いように思う.長時間編集していると目が疲れる.
他のエディタとの比較?
エディタとしての出来るとことの少なさを思うと,TeXworks はかなりチープなエディタだ.
しかしながら,基本的なエディタの機能は搭載されており,デフォルトでタイプセットの設定からSyncTeX の設定までされていることを思うと初心者にとって敷居の低いエディタであると思う.
TeXstudio やその他の汎用テキストエディタ(+拡張機能) ではTeXworks 以上の機能がさまざま整っている.設定は面倒だが,これらを使ったらTeXworks には戻れないと言われればそうである.