VScodeでLaTeX 備忘録(2)
前回の記事の続きです。前回はVScode にLaTeXの環境を構築しました。
今回は、emathの導入(Perlの連携を含む)をしたいと思います。
emath のインストール
まず、emathのページに来ます。
「こちら」をクリック
「入口」をクリック
すると、このような画面に行くと思います。
「丸ごとパック」をクリックして「emathf051107c.zip」をインストールします。
「訂正版」をクリックして「emathc240123.zip」をインストールします。(2005/11/07以降に新設/修正されたコマンド類をインストールするため。)
手順2と同じページにある、perl との連携用スクリプトファイルの訂正「emathpl130521(emathpl16.zip)」をインストールします。
*「emathに必要なスタイルファイルなど」で適宜必要になったものをインストールしてください。
私は、「eclarith.zip」と「eclbkbox.lzh」をダウンロードしました。(.lzhファイルはwindowsで解凍できなくLhaplusなどを使って解凍しなければならないため面倒なので、解凍してzipにしたものを置いておきます。)
この先に実行するsample.texでeclbkbox.styは必要なのでインストールしてみてください。
この3つのzipファイルを解凍します。
「emathf051107c」を開くと「sty.zip」と「pdf.zip」と「doc.zip」があると思います。後ろの2つは、「emathの使い方やコマンド集」と「サンプルのtexファイルです」環境構築が終わってから活用してください。
まず使うのは、「sty.zip」なのでこれを解凍して、解凍したフォルダを「emath」と名前を変更します。「emathc240123」の中身を先ほど作った「emath」フォルダにコピペしてください。この際に同じファイル名のものは全て上書きするようにしてください。
*「emathに必要なスタイルファイルなど」でインストールした人はそれもここにぶち込んでください。(emathpl16は後程、使います)
次に作業のベースとなるディレクトリを決めます。コマンドプロンプトで
kpsewhich -all texmf.cnf
と打ち込んでエンターキーを押します。私の場合は、
c:/texlive/2024/texmf.cnf
c:/texlive/2024/texmf-dist/web2c/texmf.cnf
と返ってきます。私の場合は、ルートディレクトリ直下に texlive というディレクトリが配置されていますが、 環境によっては、直下ではなく、間に user/.../ などが入って c:/user/.../.../texlive などとなる場合もあります。
なので私の場合は、「c:/texlive/2024/texmf-dist/tex/latex」の中に、先ほど作成した「emath」フォルダーをコピペします。
*とりあえず「…/2024/texmf-dist/tex/latex」の中に入れておけば大丈夫ということです。
コマンドプロンプトで「mktexlsr」と打ち込んでエンターキーを押します。
mktexlsr
すると、パッケージリストの更新がされます。
mktexlsr: Updating C:/texlive/texmf-local/ls-R...
mktexlsr: Updated C:/texlive/texmf-local/ls-R.
mktexlsr: Updating C:/texlive/2024/texmf-config/ls-R...
mktexlsr: Updated C:/texlive/2024/texmf-config/ls-R.
mktexlsr: Updating C:/texlive/2024/texmf-var/ls-R...
mktexlsr: Updated C:/texlive/2024/texmf-var/ls-R.
mktexlsr: Updating C:/texlive/2024/texmf-dist/ls-R...
mktexlsr: Updated C:/texlive/2024/texmf-dist/ls-R.
mktexlsr: Done.
emathの実行テスト
ここまで来たら、emathの導入(Perlの連携は除く)は完了しました。ここで上手く、実行できるか確かめてみましょう。ネットに転がっていたサンプルコードです。http://emath.s40.xrea.com/xdir/saloon/treebbs.cgi?kako=1&log=1235
\documentclass[b4j]{jarticle}
\usepackage[papersize,notMy]{emathP}
%\usepackage[maskAnsfalse]{emathAe}
\usepackage[maskAnstrue]{emathAe}
\usepackage{hakoMS}
\pagestyle{empty}
\setlength{\paperwidth}{257mm}
\setlength{\paperheight}{365mm}
\setlength{\textwidth}{\paperwidth}
\addtolength{\textwidth}{-22mm}
\setlength{\textheight}{\paperheight}
\addtolength{\textheight}{-30mm}
\setlength{\leftmargin}{0mm}
\setlength{\oddsidemargin}{-12mm}
\setlength{\topmargin}{-10mm}
\setlength{\headsep}{0mm}
\setlength{\parindent}{0zw}
\setlength{\columnsep}{12mm}
\setlength{\columnseprule}{0mm}
\def\拡大率IA{0.9}%
\def\解答高IA{1.1}%
\newlength{\解答欄余白幅IA}%
\setlength{\解答欄余白幅IA}{0.8\tabcolsep}%
\def\拡大率IIB{0.9}%
\def\解答高IIB{1.1}%
\newlength{\解答欄余白幅IIB}%
\setlength{\解答欄余白幅IIB}{0.8\tabcolsep}%
\begin{document}
\hakosyotai{\gtfamily}%EMmarksheet だけなので、ここで記述
\twocolumn[
{\Large\bf{}2014年度 大学入試センター試験\quad{}数学\EMRoman{1}$\bm\cdot$A\quad{}解答用紙}%
\qquad{}%
\vspace*{3mm}
]
\begin{enumerate}{}%
\renewcommand{\labelenumi}{{\large{\protect\makebox[0em][c]{\bfseries\ {第 \arabic{enumi} 問}\ }}}}%
\item %
\mbox{}
\scalebox{\拡大率IA}
{%
\def\arraystretch{\解答高IA}
\setlength\tabcolsep{\解答欄余白幅IA}
\EMmarksheet%
[1,,,,2,,,2,,2,,,,,3,,2,,4,,4]
'2,2,$-$,1,6,8,3,6,1,6,4,1,6,8,4,1,0,0,4,1,4'
{21}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\vfill
\item %
\mbox{}
\scalebox{\拡大率IA}
{%
\def\arraystretch{\解答高IA}
\setlength\tabcolsep{\解答欄余白幅IA}
\EMmarksheet%
[,,,,3,,,2,2,2,,1,,1,1,3,,,1,3,,1,,2,,1,,,2]
'$-$,2,6,3,6,3,$-$,1,4,8,$-$,3,3,3,6,1,$-$,3,9,6,3,6,$-$,3,3,1,$-$,7,3'
{29}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\vfill
\newpage
\item %
\mbox{}
\scalebox{\拡大率IA}
{%
\def\arraystretch{\解答高IA}
\setlength\tabcolsep{\解答欄余白幅IA}
\EMmarksheet%
[3,,3,,,3,,,,,3,,4,,,,4,,,,4,,3,3]
'4,7,8,1,5,8,8,1,5,1,5,8,3,2,1,0,3,2,1,0,5,5,8,4'
{24}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\vfill
\item %
\mbox{}
\scalebox{\拡大率IA}
{%
\def\arraystretch{\解答高IA}
\setlength\tabcolsep{\解答欄余白幅IA}
\EMmarksheet%
[2,2,,3,,,,,3,3,,3,3,,3,,,3]
'6,6,3,6,1,1,2,9,6,6,3,0,2,9,0,1,5,6'
{18}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\vfill{}
\end{enumerate}
\onecolumn%
\twocolumn[
{\Large\bf{}2014年度 大学入試センター試験\quad{}数学\EMRoman{2}$\bm\cdot$B\quad{}解答用紙}%
\qquad{}%
\vspace*{3mm}
]
\begin{enumerate}%
\renewcommand{\labelenumi}{{\large{\protect\makebox[0em][c]{\bfseries\ {第 \arabic{enumi} 問}\ }}}}%
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,2,,2,,2,3,,,2,,,2,2,1,1,1,1,1,1,1,1,,2,,2,,2,1]
'3,4,3,4,4,3,2,2,1,1,4,2,4,4,3,8,2,3,1,0,1,2,3,2,2,7,5,1,6'
{29}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,2,2,3,3,,,3,,2,,2,,,,3,,,,,3,,3,,4]
'3,2,0,1,3,$-$,1,1,3,3,2,3,1,$-$,1,2,$-$,9,4,1,4,2,4,1,1'
{25}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\newpage%
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,1,,2,,2,,,,2,,,1,,,2,,2,2,2,,2,,,2]
'1,5,2,8,4,5,2,2,3,1,6,3,5,2,1,5,5,3,3,6,3,3,2,2,3'
{25}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,,,2,1,,2,2,1,1,,1,,2,1,,,,2,,,2,,,,,2,1]
'$-$,1,0,2,3,1,2,2,0,5,1,4,7,0,0,2,$-$,5,3,9,3,5,3,7,0,3,5,1'
{28}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\newpage
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,1,,,,2,,1,2,,1,,1,2,,,2,2,2,2,2]
'1,4,1,0,0,0,3,2,4,1,8,1,4,0,1,5,0,5,8,4,1'
{21}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,1,2,2,2,,2,,,,2,,,2,,,1,,2,2,2]
'4,2,2,3,6,9,7,1,1,0,4,5,0,1,5,0,1,2,8,9,2'
{21}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\end{enumerate}%
\onecolumn
{\Large\bf{}2014年度 大学入試センター試験\quad{}数学\EMRoman{2}$\bm\cdot$B\quad{}解答用紙}%
\qquad{}%
\vspace*{3mm}
\def\拡大率IIB{0.8}%
\def\解答高IIB{1.1}%
\setlength{\解答欄余白幅IIB}{0.2\tabcolsep}%
\begin{edaenumerate}<retusuu=3,gyoukan=\vfill,edabottomsep=0mm>%
\renewcommand{\labelenumi}{{\large{\protect\makebox[0em][c]{\bfseries\ {第 \arabic{enumi} 問}\ }}}}%
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,2,,2,,2,3,,,2,,,2,2,1,1,1,1,1,1,1,1,,2,,2,,2,1]
'3,4,3,4,4,3,2,2,1,1,4,2,4,4,3,8,2,3,1,0,1,2,3,2,2,7,5,1,6'
{29}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,2,2,3,3,,,3,,2,,2,,,,3,,,,,3,,3,,4]
'3,2,0,1,3,$-$,1,1,3,3,2,3,1,$-$,1,2,$-$,9,4,1,4,2,4,1,1'
{25}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,1,,2,,2,,,,2,,,1,,,2,,2,2,2,,2,,,2]
'1,5,2,8,4,5,2,2,3,1,6,3,5,2,1,5,5,3,3,6,3,3,2,2,3'
{25}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,,,2,1,,2,2,1,1,,1,,2,1,,,,2,,,2,,,,,2,1]
'$-$,1,0,2,3,1,2,2,0,5,1,4,7,0,0,2,$-$,5,3,9,3,5,3,7,0,3,5,1'
{28}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,1,,,,2,,1,2,,1,,1,2,,,2,2,2,2,2]
'1,4,1,0,0,0,3,2,4,1,8,1,4,0,1,5,0,5,8,4,1'
{21}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\item %
\mbox{}
\hakosyotai{\gtfamily}
\scalebox{\拡大率IIB}
{%
\def\arraystretch{\解答高IIB}
\setlength\tabcolsep{\解答欄余白幅IIB}
\EMmarksheet%
[,1,2,2,2,,2,,,,2,,,2,,,1,,2,2,2]
'4,2,2,3,6,9,7,1,1,0,4,5,0,1,5,0,1,2,8,9,2'
{21}{$-$,0,1,2,3,4,5,6,7,8,9}
}
\end{edaenumerate}
\end{document}
これを実行すると、以下のようにpdfが出力されると思います。
他にも、色々なことができるので試してみてください。
Perlとの連携
TeX は数値計算ソフトではありません。128.0×128.0 でオーバーフローします。また、計算精度もあまりよくありません。そこで、emath パッケージでは、計算を Perl に外注し、その結果を補助ファイルを通じて取得する方法も用意しています。
Perlのインストール
以下のサイトから、Perlをインストールします。
More downloads (all releases): 「Zip,Portable,special editions」をクリックします。
Strawberry Perl 5.36.3.1 (2023-12-05) の「MSI installer」をクリックしインストールを始めます。(2024/09/01現時点では、ver.5.38代はLocale 'Japanese_Japan.932' is unsupported, and may crash the interpreter.というエラーが出るので少し古いバージョンのものを使用)
インストーラを開き「Next」を押し「I accept the terms in the License Agreement」にチェックを入れ「Next」を押します。
インストールするディレクトリを設定し(基本デフォルトでよい)「Next」を押します。
最終確認です。インストールしてよければ「install」を押します。
インストールが完了したら「Finish」を押します。
正常にインストールされたか確認します。コマンドプロンプトで
perl -v
と入力し、エンターキーを押します。
This is perl 5, version 36, subversion 3 (v5.36.3) built for MSWin32-x64-multi-thread
Copyright 1987-2023, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at https://www.perl.org/, the Perl Home Page.
と出ればインストール完了です。
emathとの連携
ターミナルで、「perl -V」と入力します。Vは大文字です。
perl -V
すると、下のほうに以下のような「@INC:」というのがあると思います。
@INC:
C:/Strawberry/perl/site/lib
C:/Strawberry/perl/vendor/lib
C:/Strawberry/perl/lib
「@INC:」の次の行からPerlのライブラリファイルを配置し得る場所が表示されます。そのうちの好きな場所に、emathのダウンロードの際に一緒にダウンロードした「emathpl16」の中身をコピペします。
私の場合は「C:/Strawberry/perl/lib」にnCr.pl, BignCr.pl, degsine.pl, emath.plをぶち込みました。
texliveのディレクトリの中にも保存する必要があるみたいなので、「c:/texlive/2024/tlpkg/tlperl/lib」に「emath_perl」というフォルダを作り、上の4つのファイルをコピペします。
タイプセット
perlと連携するにはオプション-shell-escapeを付けてコンパイルする必要があります。そのためVScodeのsetting.jsonをいじる必要があります。
以下が、修正したsetting.jsonです。
{
// ---------- Language ----------
"[tex]": {
// スニペット補完中にも補完を使えるようにする
"editor.suggest.snippetsPreventQuickSuggestions": false,
// インデント幅を2にする
"editor.tabSize": 2
},
"[latex]": {
// スニペット補完中にも補完を使えるようにする
"editor.suggest.snippetsPreventQuickSuggestions": false,
// インデント幅を2にする
"editor.tabSize": 2
},
"[bibtex]": {
// インデント幅を2にする
"editor.tabSize": 2
},
// ---------- LaTeX Workshop ----------
"latex-workshop.latex.tools": [
{
"command": "platex",
"args": ["-shell-escape", "-interaction=nonstopmode", "-l", "-ot", "-kanji=utf8 -synctex=1", "%DOC%"],
"name": "platex with shell-escape"
},
{
"command": "dvipdfm",
"args": ["%DOCFILE%.dvi"],
"name": "dvipdfm"
},
{
"command": "pbibtex",
"args": ["%DOCFILE%", "-kanji=utf8"],
"name": "pbibtex"
},
{
"command": "ptex2pdf",
"args": ["-interaction=nonstopmode", "-l", "-ot", "-kanji=utf8 -synctex=1", "%DOC%"],
"name": "ptex2pdf"
},
{
"command": "ptex2pdf",
"args": ["-interaction=nonstopmode", "-l", "-u", "-ot", "-kanji=utf8 -synctex=1", "%DOC%"],
"name": "ptex2pdf (uplatex)"
},
{
"command": "bibtex",
"args": ["%DOCFILE%"],
"name": "bibtex"
}
],
"latex-workshop.latex.recipes": [
//{
//"name": "ptex2pdf",
//"tools": [
// "ptex2pdf",
// "ptex2pdf"
//]
//},
//{
//"name": "pt2-bib-pt2-pt2",
//"tools": [
// "ptex2pdf",
// "pbibtex",
// "ptex2pdf",
// "ptex2pdf"
//]
//},
{
"name": "shell-escape",
"tools": [
"platex with shell-escape",
"platex with shell-escape",
"dvipdfm"
]
},
{
"name": "shell-escape-bib",
"tools": [
"platex with shell-escape",
"pbibtex",
"platex with shell-escape",
"platex with shell-escape",
"dvipdfm"
]
}
],
"latex-workshop.latex.clean.fileTypes": [
"*.aux", "*.bbl", "*.blg", "*.idx", "*.ind", "*.lof", "*.lot", "*.out", "*.toc", "*.acn", "*.acr", "*.alg", "*.glg", "*.glo", "*.gls", "*.ist", "*.fls", "*.log", "*.fdb_latexmk", "*.synctex.gz", "_minted*", "*.nav", "*.snm", "*.vrb", "*.dvi", "*.sty", "*.dta", "*.pl"
],
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.latex.autoClean.run": "onBuilt",
"latex-workshop.latex.clean.enabled": true, // 上とぶつからないかな?auxiliaryファイル削除
"latex-workshop.latex.autoBuild.run": "never"
}
連携の確認
以下のtexスクリプトを実行してみてください。
\documentclass{jarticle}
\usepackage{emathPp}
\begin{document}
\begin{zahyou}[ul=6mm](-2,4)(-2,8)
\def\Fx{X*(X-2)}
\YGurafu*\Fx
\end{zahyou}
\end{document}
以下のようなに y=x(x-2) がプロットされれば成功です。
これで、emathとPerlの連携が終わりました。
おわりに
ここまで、読んでくださいましてありがとうございます。Perlの連携に関する記事がtexworksによるものしかなく、私のように困っている人1人でも救われれば幸いです。
参考資料
emath.styの置き場所 - PukiWiki (xrea.com)
(ユーザーネームとパスワードは、ここにありますhttp://emath.la.coocan.jp/)https://qiita.com/YuichiTanaka007/items/be5a769d170bca5d7419
この記事が気に入ったらサポートをしてみませんか?