「LaTeX」の版間の差分
(Notion-MW) |
(Notion-MW) |
||
11行目: | 11行目: | ||
standaloneパッケージを用いて数式のsvgだけ生成したいときがあった。このときはpdftocairoを用いる(inkscapeでも良さそう)。VS Codeのtoolsには | standaloneパッケージを用いて数式のsvgだけ生成したいときがあった。このときはpdftocairoを用いる(inkscapeでも良さそう)。VS Codeのtoolsには | ||
< | <syntaxhighlight lang="latex">{ | ||
"name": "pdf2svg", | |||
"command": "pdftocairo", | |||
"args": [ | |||
"-svg", | |||
"%DOC%.pdf" | |||
], | ], | ||
"env": {} | |||
},</ | },</syntaxhighlight> | ||
と書き(<code>pdf2svg</code>の部分は任意、次でその名前を使う)、recipesには | と書き(<code>pdf2svg</code>の部分は任意、次でその名前を使う)、recipesには | ||
< | <syntaxhighlight lang="latex">{ | ||
"name": "platex2svg", | |||
"tools": [ | |||
"platex", | |||
"pdf2svg" | |||
] | ] | ||
},</ | },</syntaxhighlight> | ||
と書く(<code>platex2svg</code>の部分は任意)。 | と書く(<code>platex2svg</code>の部分は任意)。 | ||
83行目: | 83行目: | ||
以下はこれらをふまえてtexcountを実行し、綺麗に出力できる例である。このコードでは全てのソースファイルのファイル名に<code>_</code>以外の特殊文字がないことを仮定している。#はtexcountの出力に含まれるのでエスケープしている。またセクションごとの出力が「250+」のように数字で始まることを利用してその直前に\newlineを挿入している。 | 以下はこれらをふまえてtexcountを実行し、綺麗に出力できる例である。このコードでは全てのソースファイルのファイル名に<code>_</code>以外の特殊文字がないことを仮定している。#はtexcountの出力に含まれるのでエスケープしている。またセクションごとの出力が「250+」のように数字で始まることを利用してその直前に\newlineを挿入している。 | ||
< | <syntaxhighlight lang="visual basic">$latex = 'texcount -merge -subcount=section %S | sed \'s/#/\\\\#/g\' | sed \'s/_/\\\\_/g\' | sed -r \'s/([0-9]+\+)/\\\\newline\1/\' > out.tex; platex -options %O %S';</syntaxhighlight> | ||
<ul> | <ul> | ||
<li><p>関連しそうなやつ</p> | <li><p>関連しそうなやつ</p> |
2023年11月24日 (金) 11:07時点における版
VSCode
LaTeX Workshopをsettings.jsonから設定しようとしても存在するはずのデフォルト設定が表示されなくて困っていたが、vscode - Recipes in Settings.JSON for Latex Workshop extension not showing - TeX - LaTeX Stack Exchangeによれば"latex-workshop.latex.recipes":
まで自分で入れると補完されるらしい。
一番上に書いたレシピがデフォルトとして実行される模様。レシピの中で使うコマンドはlatex-workshop.latex.tools
で定義する。
SVG変換
standaloneパッケージを用いて数式のsvgだけ生成したいときがあった。このときはpdftocairoを用いる(inkscapeでも良さそう)。VS Codeのtoolsには
{
"name": "pdf2svg",
"command": "pdftocairo",
"args": [
"-svg",
"%DOC%.pdf"
],
"env": {}
},
と書き(pdf2svg
の部分は任意、次でその名前を使う)、recipesには
{
"name": "platex2svg",
"tools": [
"platex",
"pdf2svg"
]
},
と書く(platex2svg
の部分は任意)。
latexmkrc
https://znuko.github.io/nukodocs/tex/latexmk/#vscode によると、vscodeを使う場合は、latexmkrcに書くようなことをsettings.jsonに書いてしまったほうが楽らしい
TeXcount
%TC:group 環境名 0 0
%TC:macro \マクロ名 [ignore]
などと書くと該当の環境やmacroをカウントから除外できる
%TC:ignoreと%TC:endignoreで挟むという方法もある
texcount -merge -subcount=section %S
などとすると、includeされているファイルをマージしてカウントした上で、セクション単位の字数を表示してくれる
Overleaf
フォント
デフォルトのLucida / Source Code ProよりもMonaco / Menlo / Consolasのほうが見やすい気がする(特に日本語でコメントを書いているときに文字バランスが良くなる)。サイズや行間も変えられる。
Overleaf上でのコマンド実行
Overleafだと例えば全体に対するTeXCountの結果しか見れず、セクション・チャプターごとのWord数も見たかったので、任意コマンドを実行して結果を得る方法を見つけた。
まず以下のようにlatexmkrcを使ったコンパイル設定ができているものとする。
$latex = 'platex -options %O %S';
このとき、まずこのplatexの前で任意コマンドを実行し、結果をファイルに書き込む。
$latex = 'command > out.tex ; platex -options %O %S';
- このout.texはOverleaf上にはまったく表示されない(おそらくpdf生成後に他の一時ファイルと共にまとめて削除される)
そして、(Overleaf上で編集している)LaTeXファイルの方では、
\include{out.tex}
と、先ほどの出力ファイルをincludeする。こうすることで、コマンド出力を記録したページが該当位置に挿入されるはず。
texファイル内でコマンドを実行する機能もあるが(bashfulパッケージなど)、このタイミングだと作業ディレクトリの外が一切見えなくなっているようで、texcountも実行できない。
texファイルとして挿入する関係上、コマンドの出力結果からTeX上の特殊文字(# $ % & _ { } \ ^ ~ < > |
)を除外あるいはエスケープしておく必要がある。またそのままでは改行も挿入されないので適宜\newlineなどを使って挿入する。これらはsedコマンドで可能である。
以下はこれらをふまえてtexcountを実行し、綺麗に出力できる例である。このコードでは全てのソースファイルのファイル名に_
以外の特殊文字がないことを仮定している。#はtexcountの出力に含まれるのでエスケープしている。またセクションごとの出力が「250+」のように数字で始まることを利用してその直前に\newlineを挿入している。
$latex = 'texcount -merge -subcount=section %S | sed \'s/#/\\\\#/g\' | sed \'s/_/\\\\_/g\' | sed -r \'s/([0-9]+\+)/\\\\newline\1/\' > out.tex; platex -options %O %S';
関連しそうなやつ
https://qiita.com/keith_campbell/items/812508ab081fef1f8d85 latexdiffを使う方法。こちらでも、コマンドを使って生成した.texファイルは勝手に削除されてしまうということが説明されている。
数式OCR
Mathpix SnipをEducation Planで使おう
pLaTeXのクラスファイルをupLaTeXやLuaLaTeXに対応させる
http://abenori.blogspot.com/2021/06/uplatex-lualatex.html
WindowsのTeX Liveでのフォント
すべてのユーザーにインストールするのが大事 http://alg-d.com/ これはWebブラウザ(Chrome) などと似た話である。