CentOS で emath と perl を連携させたい

CentOS で emath と perl を連携させたい

- Murakami Keitaro の投稿
返信数: 4
Rocky Linux 8.5
texlive 2021

例によっててこずっております。

emath_perl 置き場:
/home/user/latex/.perl
emath_sty 置き場:
/home/user/latex/.packages

シンボリックリンクを作成

/usr/local/texlive/2021/texmf-dist/tex/latex/packages -> /home/user/latex/.packages
/usr/share/perl5/latex -> /home/user/latex/.package

ちなみに:

$ perl -V
Summary of my perl5 (revision 5 version 26 subversion 3) configuration:
Platform:
osname=linux
osvers=4.19.34-300.el7.x86_64
archname=x86_64-linux-thread-multi
uname='linux x86-01.mbox.centos.org 4.19.34-300.el7.x86_64 #1 smp mon apr 15 18:04:36 utc 2019 x86_64 x86_64 x86_64 gnulinux '
(略)
Built under linux
Compiled at Nov 4 2021 17:06:58
@INC:
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5

TeX ファイル

\documentclass[dvipdfmx,a4j]{ujarticle}
\usepackage[top=30truemm,bottom=30truemm,left=15truemm,right=15truemm]{geometry}
\usepackage{amsmath, amsfonts, ascmac, amssymb}
\usepackage{graphicx, fancyhdr}
\setlength{\headheight}{15pt}
\usepackage{color, comment, accents}
\usepackage{enumerate}
\renewcommand{\labelenumi}{\textbf{問題{\theenumi}.}}
\renewcommand{\theenumii}{\arabic{enumii}}
\renewcommand{\baselinestretch}{1.5}
\usepackage{emathP}
\begin{document}
aaaaaaaaa
%\begin{EMpsrectbox}%
% [wave, borderwidth=5pt]
%aaaa
%\end{EMpsrectbox}
aaaaaaaaa
\end{document}

VSCode setting.json:

{
"name": "uptex2pdf",
"command": "ptex2pdf",
"args": [
"-u",
"-l",
"-ot",
"-shell-escape",
"-kanji=utf8",
"-guess-input-enc",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {
"PATH": "/usr/local/texlive/2021/bin/x86_64-linux/"
}
},

ptex2pdf ログ

This is e-upTeX, Version 3.141592653-p3.9.0-u1.27-210218-2.6 (utf8.uptex) (TeX Live 2021) (preloaded format=uplatex 2022.1.4) 4 JAN 2022 07:52
entering extended mode
\write18 enabled.
(略)
\openout4 = `hoge--------.pl'.
runsystem(perl hoge--------.pl)...executed.
LaTeX Warning: emathPp : you cannot use perl on input line 12.



それと, emath wiki が basic 認証を求められてパスワードが分からないために入れないのですが、他の方は如何でしょうか、、、。
Murakami Keitaro への返信

Re: CentOS で emath と perl を連携させたい

- 和田 勇 の投稿

気になるところ、いくつか回答します。 ポイントは、パッケージマネージャ dnf や texlive 管理のところに、 それ以外の管理が必要となるものを置かない方が良いという点と起動したアプリケーションでの PATH の設定。

  • emath_perl 置き場 ... 「perl -V」で最後の方に表示される「@INC: 」に使用される perl のスクリプトを置いたパス /home/user/latex/.perl が表示されていれば良いです。

    表示されていなければ環境変数 PERL5LIB に登録・追記する対策を施します。 例としては vscode の env のところに追記したり .bashrc などに書き込みます。

    で、懸念してるのは「/usr/share/perl5/latex -> /home/user/latex/.package」です。 これは、dnf が管理しているところに、その管理外の emath 関連を おくことになるので、少なくとも私個人の意見ですが甘りよろしくないと思いますので、シンボリックリンクを外して、mkdir し PERL5LIB で調整した方が良いと思います。

  • emath_sty 置き場 ... こっちは latex が利用する環境変数ですが、 最近は内部的に持っている TEXMF TEXMFLOCAL TEXMFHOME など に /home/user/latex/.packages が入っていれば良いです。

    どのようなパスが設定されているかは「kpsewhich --var-value TEXMF」などで調べることができます。

    とはいえ TEXMF は texlive が管理していると思っていただいて良いので TEXMFLOCAL か TEXMF に今回のような追加分を設置することになります。TEXMF に入れておくと 2022 が四月ごろ公開され、アップグレードすると emath が使えなくなるということも考えられます。

    TEXMFLOCAL か TEXMFHOME ですが、 texlive + emath を複数の人と一つのコンピュータで共有する場合は emath は TEXMFLOCAL に設置されている方が良いです。

    こちらも「/usr/local/texlive/2021/texmf-dist/tex/latex/packages -> /home/user/latex/.packages」は TEXMF なところに置くことになるので、2022 に変えた途端、emath は使えなくなります。

  • VSCode setting.json の「env PATH」について

        "env": {"PATH": "/usr/local/texlive/2021/bin/x86_64-linux/"}
   

 のように記述すると texlive だけしか PATH にないので perl などは動かないと思います。 未確認だけど、vscode 自体が起動したときの PATH に追加するなら以下のようにするのだと思います。 ログインシェル環境の設定ファイルを読み込んでいるかは未確認なので。

         "/usr/local/texlive/2021/bin/x86_64-linux/:$PATH"
   
和田 勇 への返信

Re: CentOS で emath と perl を連携させたい

- Murakami Keitaro の投稿
和田様

ご検証いただきましてありがとうございます.

https://okumuralab.org/tex/mod/forum/discuss.php?d=3299
も拝見いたしました.

御指摘の通り, TEXMF に emath を配置し, $HOME/.bashrc に myPERL5LIB を宣言して置いた上で, ptex2pdf を実行したところ, 無事 sqrt(2) の近似値が出力されました.
シンボリックリンク等のゴミは追々削除しようと思います.

ところで, VSCode ですが, settings.json から env を削除すると, Error: Recipe terminated with fatal error: spawn ptex2pdf ENOENT を吐きます.
https://blog.n-hassy.info/2021/05/vscode-latex-enoent/
何か VSCode における環境変数の設定に誤りがあるのでしょうか.

一つ懸念として, VSCode ではなく, 実は Code-Server を利用しています. そのあたりも影響しているのかもしれません.
あと, latexmkrc は多分作成していません(自動生成だったら分かりません/Home ディレクトリにそんなものはない/作るべき?)



ご返信遅くなりました.
ご尽力賜りまして, ありがとうございます.



EMpsrectbox は lrep_e1.eps のために conversion が開けねぇと文句を言われて使えておりませんが, 取り急ぎご報告まで.
http://emath.s40.xrea.com/ydir/Wiki/index.php?EMpsrectbox%B4%C4%B6%AD#d55a8573

emath wiki は年号が変わったことを失念しておりました.

Murakami Keitaro への返信

Re: CentOS で emath と perl を連携させたい

- Murakami Keitaro の投稿
あ゛.... tDb 先生に怒られるやつ...

http://emath.la.coocan.jp/pdf/samplePs.pdf

>> 注 グラフィックスは機種依存,dvi-ware 依存です。
>>EMpsrectbox 環境は,dvipdfm(x) には対応していません。再三述べていまが,x < 0, y < 0 を無視する仕様のようで,枠の下辺と左辺が削られます。
>> 確認の意味で,dvipsk+Distiller で作成した PDF を同梱します。

大変失礼いたしました.

Murakami Keitaro への返信

Re: CentOS で emath と perl を連携させたい

- 和田 勇 の投稿
私は、全て Rocky 上でtexlive も vscode も動かしているのだと思っていましたが、どうやら違うようですね。

Code-Server は概ね理解はしましたが、
ローカルにインストールした texlive をリモート?サーバー側で動かすのかな?

Rockyも docker で動かしているのかな?
そこに texlive 入れて ... とかして... 遠隔側から Code-Server で Rocky の texlive 経由で動かそうとしているのかな?

Code-Server でターミナルコンソール開けるなら、そこで texlive が動くかどうか試してみれば良いと思います。

推測ですが、Code-Server が起動された時、その時点では、変更した .bashrc などは取り込んでいないので、懸念される「Error: Recipe terminated with fatal error ....」となっているのだと思います。

そうであれば settings.json で env に PATH と PERL5LIB は必要になるかもしれません。

あるいは、/etc/profile.d/ があれば、Code-Server 用に .sh を付与した
設定ファイルを新設すればいいのではと思います。

いずれにしても、現時点ではこれ以上の検証はできそうにありません。