2024年2月6日火曜日

Listings の使用をやめて Algorithmicx を使う

Listingsのキャプションがいまいちすぎる.情報系では Algorithmicx を使うらしいので導入してみる.

tlmgrでインストールしよう
% sudo tlmgr install algorithmicx
とするもてめえの TexLive は 2019 で,最新の 2023 より古いから入らんよと言われてしまう.(ログは忘れた)
apt update して再度インストールを試みるも 2019 が再度インストールされてしまう...(LinuxMint 21.2です)

% sudo apt remove texlive-full
% sudo apt remove texlive-base
% apt update
(再起動)
% sudo apt install texlive-full
(2019をインストールしてしまう)

仕方ないので install-tl を使ってインストールすることに.texjpの指示通りです.
https://texwiki.texjp.org/?Linux#texliveinstall
ただリポジトリを指定するとうまくいかなかったので指定しなかった.
% wget http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
% tar xvf install-tl-unx.tar.gz
% cd install-tl-2*
%  sudo ./install-tl -no-gui 
...
Actions:
 <I> start installation to hard disk
 <H> help
 <Q> quit
Enter command: I
(延々ダウンロード)
% sudo /usr/local/texlive/2023/bin/x86_64-linux/tlmgr path add

念のためアップデートしてみた.なぜかいくつかアップデートが走った.
% sudo tlmgr update --self --all
tlmgr: package repository https://ftp.yz.yamagata-u.ac.jp/pub/CTAN/systems/texlive/tlnet (verified)
tlmgr: saving backups to /usr/local/texlive/2023/tlpkg/backups
tlmgr: no self-updates for tlmgr available
[ 1/12, ??:??/??:??] update: acmart [4890k] (68950 -> 69242) ... done
...
[12/12, 00:15/00:15] update: versonotes [133k] (55777 -> 69249) ... done
running mktexlsr ...
done running mktexlsr.
running updmap-sys ...
done running updmap-sys.
tlmgr: package log updated: /usr/local/texlive/2023/texmf-var/web2c/tlmgr.log
tlmgr: command log updated: /usr/local/texlive/2023/texmf-var/web2c/tlmgr-commands.log

念のため既存の tex をコンパイルしてちゃんと動くか確認.
% cd ~/(適当なTexディレクトリ)
% make

本番の tex 環境に戻り,コンパイルしてみる.

参考にしたサイトだと tlmgr で以下のようにパッケージをインストールせよとあったけれど,うちの環境では不要のようだった..
% sudo tlmgr install algorithmicx
% sudo tlmgr install algorithms

Listings では HTML の plane タグの様に特殊文字のエスケープなどは必要なかったのだけれど, alrogithmic の環境だと
通常の Latex の環境同様エスケープや改行などは必要みたい.あと文中に日本語があるとコンパイル時に
! Not two-byte family.
と警告が出て止まってしまう.まあでも日本語でアルゴリズム書くこと無いからいいか.

Algorithmicx の参考に下サイト:
https://li-feel.hatenablog.com/entry/2017/12/19/160618
https://github.com/PMOB/study-tex/wiki/reference-algorithm



2024年2月5日月曜日

IEICEのクラスファイル を TeXLive 2023で動かすようにする

環境は Linux Mint 21.2です.クラスファイルは ieice2.2 です.(2015年)
普通にコンパイルすると
  1. ! Undefined control sequence.
  2. \set@color -> ;\pdfcolorstack;
  3. \@pdfcolorstack push{\current@color }\aftergroup...
.
で止まる.
\usepackage{graphicx,xcolor}% for pdflatex
\usepackage[dvipdfmx]{graphicx,xcolor}
に変える.

これまで Bibtex では ieicetr.bst と reference.bib をワーキングディレクトリに置いて
\bibliographystyle{ieicetr}
\bibliography{reference}

という記述を使っていたのだが,TexLiveをアップデートしてから
  1. This is BibTeX, Version 0.99d (TeX Live 2022/dev/Debian)
  2. The top-level auxiliary file: IEICE_CAD.aux
  3. I couldn't open style file ieeetran.bst
  4. ---line 26 of file IEICE_CAD.aux
  5. : \bibstyle{ieicebst
  6. : }
  7. I'm skipping whatever remains of this command
  8. I couldn't open database file reference.bib
  9. ---line 27 of file IEICE_CAD.aux
  10. : \bibdata{reference
  11. : }
  12. I'm skipping whatever remains of this command
  13. I found no database files---while reading file IEICE_CAD.aux
  14. I found no style file---while reading file IEICE_CAD.aux
  15. (There were 4 error messages)
というエラーが出るようになった(TexLive 2023 なのになんで 2022 なん?).それどころか TexLive デフォルトでインストールされる IEEEtran もエラーになるように.bst ファイルのデフォルトの保存ディレクトリにある bst ファイルも,カレントディレクトリにある bst ファイル,bib ファイルも読めない.これらはカレントディレクトリに置けばいいって奥村先生も言っているのになぜ


悩んでいたのだが,以下のサイトからパスをちゃんと書かないといけないらしいという情報を見つけた.

ほんとうかいな.カレントディレクトリに置いたファイルは"./"をつけよう.
\bibliographystyle{./ieicetr}
\bibliography{./reference}

デフォルトでインストールされる BST ファイルについては, BSTINPUTS が
% echo $BSTINPUTS 
/usr/local/texlive/2023/texmf-dist/bibtex/bst/
を指していて IEEEtran は
% ls /usr/local/texlive/2023/texmf-dist/bibtex/bst/IEEEtran/IEEEtran.bst
にあるので,以下のように書き換えれば良いらしい.\bibliographystyle{IEEEtrran/IEEEtran}
\bibliographystyle{ieeetrran/IEEEtran}

上記の様にコードを変更したらどちらも動いた.良かったけれど動き方がなんか想定と違う気が...

念のため,.zshrc にBSTINPUTSも設定しておこう.
% export BSTINPUTS=/usr/local/texlive/2023/texmf-dist/bibtex/bst/

24/02/15 訂正
bibliographystyle のディレクトリ名 IEEETran はieeetran とすべて小文字でした.

2024年2月2日金曜日

PDFへのフォントの埋め込み TexLive 2023版

PDFへのフォントの埋め込みをしないと IEEE PDF eXpres が文句を言うので埋め込む.

初手でいきなり気持ち悪い事をするのだが,GhostScriptの設定を変更する.設定ファイルは以下にあるようだ.(いくつかのWebサイトでは [ver]/lib の下と書いているが,そうでは無いらしい)
  1. /usr/share/ghostscript/9.55.0/Resource/Init/gs_pdfwr.ps

.standardfonts で指定している基本フォントをすべてコメントアウトしてしまう.
  1. /.standardfonts [
  2. % /Courier /Courier-Bold /Courier-Oblique /Courier-BoldOblique
  3. % /Helvetica /Helvetica-Bold /Helvetica-Oblique /Helvetica-BoldOblique
  4. % /Times-Roman /Times-Bold /Times-Italic /Times-BoldItalic
  5. % /Symbol /ZapfDingbats
  6. ] readonly def

マップするフォントを指定するファイルを作成する.
  1. echo "rml H :0:ipam.ttf" > textfont.map
  2. echo "gbm H :0:ipag.ttf" >> textfont.map
  3. echo "rmlv V :0:ipam.ttf" >> textfont.map
  4. echo "gbmv V :0:ipag.ttf" >> textfont.map

-f オプションをつけてコンパイル
  1. dvipdfmx -f textfonts.map main.dvi

確認
  1. % pdffonts main.pdf
  2. name type encoding emb sub uni object ID
  3. ------------------------------------ ----------------- ---------------- --- --- --- ---------
  4. BFXFUH+NimbusRomNo9L-Regu Type 1C Custom yes yes yes 4 0
  5. TLDEQQ+CMSY8 Type 1C Builtin yes yes yes 5 0
  6. AKQSYA+NimbusRomNo9L-ReguItal Type 1C Custom yes yes yes 6 0
  7. NIKTLI+NimbusRomNo9L-MediItal Type 1C Custom yes yes yes 7 0
  8. YLFCCB+NimbusRomNo9L-Medi Type 1C Custom yes yes yes 8 0
  9. BWTDFP+Helvetica Type 1C WinAnsi yes yes no 10 0
  10. XBVXSN+CMMI10 Type 1C Builtin yes yes yes 18 0
  11. XYEUNM+CMR10 Type 1C Builtin yes yes yes 19 0
  12. TSPOJC+CMSY10 Type 1C Builtin yes yes yes 20 0
  13. VKZLRK+CMSY9 Type 1C Builtin yes yes yes 21 0
  14. NLQACA+CMMI9 Type 1C Builtin yes yes yes 22 0
  15. ACXUUK+Helvetica Type 1C WinAnsi yes yes no 27 0
  16. BHRAOW+Helvetica Type 1C WinAnsi yes yes no 32 0
  17. YZDJWY+CMMI8 Type 1C Builtin yes yes yes 39 0
  18. %
全部 emb が yes になっているからOK.

環境構築すると GS の設定を変更するのすぐに忘れちゃうんだよな.

2024年2月1日木曜日

HSPICE で過渡解析の結果として初期値のみが表示される

HSPICEで過渡解析を行ったときに,初期値(時間0点)のみ表示されて波形が表示されないことがある.

これは autostop を使っている状態で .Measure の条件を満たす波形入力が存在しないことが自明な場合(例えばトリガ条件の信号が存在しないなど)に過渡解析を実施せずに終了してしまう様だ.ややこしいのは最後のログが "*** job concluded" と表示される事だけれど,実際には初期条件の評価しかしていない.

例えばこんなSPICE CARDを入力すると.
  1. ...
  2. * Prop. delay
  3. .Measure Tran Prop_dut Trig v(W5_10) Val='VOLT/2' rise=1 targ v(W6_01) val='VOLT/2' fall=1 print=0
  4. .Measure Tran Prop_ref Trig v(W5_10) Val='VOLT/2' rise=1 targ v(W6_10) val='VOLT/2' fall=1 print=0
  5.  
  6. V_D01 DATA01 0 pwl (40p 0 100p 0 '100p + SLEW' 'VOLT' )
  7.  
  8. .subckt INV4 IN OUT VDD VSS
  9. XINV1 IN OUT VDD VSS VDD VSS INV_X1
  10. XINV2 IN W1 VDD VSS VDD VSS INV_X1
  11. XINV3 IN W2 VDD VSS VDD VSS INV_X1
  12. XINV4 IN W3 VDD VSS VDD VSS INV_X1
  13. .ends
  14. ...


.Measureの条件である W6_01,W6_02 は存在しないのでこの .Measure は無視される.


結局生成された波形ファイル (.tr0) を見ても,時間ゼロでの初期値(ここでは0.7 V)が点で表示されるだけである. ちゃんとログを見ると,

**warning** (delay_wring.sp:32) Unable to find referenced node w5_10; Output variable ignored. Specify a valid node.

という感じに存在しないネットについてはワーニングがでているので,まあちゃんと確認しなさいということか. 

昔の HSPICE はこんな振る舞いだったかな,とはちょっと疑問ではある.ここでは P-2019.06-1 を使っている.