みやびの備忘録

LaTeXとかjulia言語とか. 覚えておきたいことをつらつら書いています.

ptex2pdfでemathとperlの連携が上手くいかない件

新しいパソコンにtexをインストールするたびに同じところで詰まっている気がするのでメモ

標記の件, 結論から言うと,
emathとperlの連携機能を使うための「emath.pl」などは, コマンドライン
perl -V
を実行して表示されるフォルダのほかに,
C:\texlive\2022\tlpkg\tlperl\lib *1
にも置かなければならない!!!


最近はtexlive & vscodeで作業をしている. vscode, いいですよね. かっこいいし.

emathのperl連携機能(YGraphとか)に非常にお世話になっているので, 「-shell-escape」は必須. vscodeのsetting.jsonには,

    "latex-workshop.latex.tools": [
        {
            "name": "ptex2pdf enable shell escape",
            "command": "ptex2pdf",
            "args": [
                "-u",
                "-l",
                "-interaction=nonstopmode",
                "-ot",
                "-synctex=1 -file-line-error -shell-escape",
                "%DOC%"
            ],
        },
    ],

こんな感じに記載をしており, 実際に「-shell-escape」は通っている.

そこで, コマンドラインでptex2pdfを実行したら, emath.Plが見つかりませんみたいなエラーが出てきて, そこに@INCなどと表示される場所に, emathとperlの連携機能に必要なファイルを入れたら解決した.

よいemathライフを!

*1: 人によって違うかも

LaTeXのstandaloneクラスで謎の2ページ目(空白)が出現

タイトルの通り

グラフの作成においてLatex+emathに非常にお世話になっておりますが,
グラフだけの画像ファイル(pdf)を生成しようと

\documentclass{standalone}

とすると自分の環境では2ページのpdfになってしまう。

調べていたら以下のページにたどり着いた。
github.com

standalone.cls(styファイルとかと同じ階層にあると思う)をtexファイルと同じフォルダにコピーし,

\def\sa@placebox{%
    \newpage
    \global\pdfpagewidth=\wd\sa@box
    \global\pdfpageheight=\ht\sa@box
    \global\paperwidth=\wd\sa@box
    \global\paperheight=\ht\sa@box
    \global\hsize=\wd\sa@box
    \global\vsize=\ht\sa@box
    \global\@colht=\ht\sa@box
    \global\@colroom=\ht\sa@box
    \special{papersize=\the\pdfpagewidth,\the\pdfpageheight}%%%%%  This line.
    \noindent\usebox\sa@box
    \newpage
  }%

を付け加える。職場の環境ではこれで解決した。(This lineとかコメント入ってるし付け加えるのは1行でいいのかも?)

と, 自宅の環境ではそもそも空白ページは出現しなかった。
standaloneのバグか何かで, もうそれが直ったものが公開されているんですかね?

画像ファイルはPDF!繰り返す. 画像はPDF!!

LaTeXで文書を書いていて, コンパイルまではすんなり終わるのに, 最後のPDFへの埋め込みに異常な時間がかかってお困りの皆さん.
それ, epsファイルのせいっぽいっすよ.

詳しいことはよく分かりませんが, epsを内部でPDFに変換しているんだとか.
埋め込み中にタスクマネージャをみたらGhostscriptがすごい頑張ってました…


TeXが重い!!といろいろ調べてたら画像だけのPDFをつくる方法があったのでまとめます.

用意するもの
LaTeX文書
・epsファイル
・画像用の新規texファイル(gnuplotのepslatexであれば必要なし)

やり方は簡単. 画像だけのtexファイルをコンパイルするだけ. texファイルの中身は,

\documentclass[オプション]{standalone}
\usepackage{graphicx}
\usepackage{color, pict2e}
\begin{document}
  \includegraphics{hoge.eps}
\end{document}

とする. epslatexの場合は, 元々生成されているtexファイルに\documentclass, \begin{document}, \end{document}を付け加えればよい. グラフの凡例などに数式等を入れている場合は, それに必要なstyファイルを\usepackageすることも忘れずに.

また, epslatexで自動生成されるtexファイルのなかにある\includegraphicsには拡張子が省略されているので, .epsを付け足す. これをしないと修正のために再度コンパイルをしたときにエラーを起こす. (恐らくPDFが優先されている.)


こうするとtexファイルと同名のPDFファイルができるので, これを本体の中で\includegraphicsするだけ.
これで見違えるほど軽くなるはずです.

まあ画像一回一回のコンパイルで時間はかかるんですけどね.
文書のちょっとした修正を行いたいときとかに, 事前にやっとくといいですよ~って感じか.



ご存知の方はスルーで
dvipdfmxを使っている場合
pdfだからmediabbか~ してはいけません
\usepackage{mediabb}は禁則です.

gnuplotで背景色を黒にする

gnuplotでスライド用のグラフの画像を作っています.
遠くからでも見やすい色にしたくて色々変えてみたところで, 綺麗なカラーバリエーション(?)にするなんて素人には無理な話なんですね. 特に私美的センスゼロなもんで.

なんだかんだデフォルトが一番. しかし見づらい…
「あ, 背景色黒にすればいいんじゃね?」

ってことで調べまくってたんですけど結構ややこしかったんでメモ.

まず色の設定.

set object 1 rect behind from screen 0,0 to screen 1,1 fc rgb "#333631" fillstyle solid 1.0
set grid lc rgb "white" lt 2
set border lc rgb "white"
set key tc rgb "white"
set xlabel "xlabel" tc rgb "white"
set ylabel "ylabel" tc rgb "white" offset 1, 0
set size ratio 2.0/(1.0 + sqrt(5.0))
set palette rgbformulae 22, 13, -31

1行目, #333631は, 真っ黒じゃ嫌だったので少し優しめの色を選びました.
2行目からは諸々の色を白にしている. 背景黒なんで. 2行目のlt 2で実線, 1にすると破線.
offsetってのはylabelを少しグラフに近づけてる.
最後のは陰面処理っていうの?熱分布のアレの色を虹色にするらしい.

(gnuplot 5.0の)デフォルト色でグラフを書くけど, 流石にlc 1のdark-violetは暗くて見づらい. 多分.
個人的にはlc 2, 3, 5, 7あたりを使えばよさそうかなと思っている.


さてグラフが出来たしいつも通りterminalをepslatexにして…

TeXファイルに色が反映してない…!嘘だろ…!

色々試したけど結局目盛りだけは白色に出来なくて諦めた.


普通のpostscript eps colorは大丈夫だった. フォントがTeXっぽくならないし数式入れられないけどまあスライドだしいいか. しょうがない.
凡例のタイトルはplot ~ title "hoge"と書けば変えられる.
あとそのままだと文字が小さいので,

set terminal postscript eps color 20 #ここでフォントサイズ指定

多分サイズはこのくらいでOK.

ちなみに完成系はこんな感じ.
f:id:miyabi-mathematics:20170125212033p:plain

試しに研究室のプロジェクターで映してみたけど結構いいかなって感じでした.
卒論の発表練習で出したら結構不評だった…(笑)
見やすいと格好いいは別物ですね.

LaTeXのcaption, gnuplotのterminal

本当にただの備忘録. 忘れそうだから.
LaTeXでcaptionの中で数式番号などを参照したいときは, \refとか\eqrefとかの前に\protectをつける.

gnuplotでeps等に出力した後,

> set terminal wxt
> replot

とすればデフォルトの画面に戻れて, ファイルも閉じる. 設定もそのまま引き継ぐので何かと便利.
set terminal windowではない. これ, なんか違う感がすごい.

陰関数のグラフ

gnuplotでは陽関数のグラフしか書けない.
そこで陰関数のグラフを書くために, z=f(x,\, y) のグラフの等高線を利用して書くんですね.
詳しくは
http://www.cymric.jp/old/common-soft/gnuplot_inkansu.html
このページを参照してちょ.

しかし困ったことに縦横比が変えられなかった.
そこで

set table "hoge.dat"
unset table
plot "hoge.dat"

データをファイルに落としてくれるんですね.
こうすれば好きな設定が使える. やったぜ.

グラフの縦横比

gnuplotでグラフの縦横比を変える, set size ratioというコマンドがあるのだが, よくわからず使っていた.

set size ratio -1

とすれば xy の目盛り自体が 1:1 となり,

set size ratio a

で, グラフの外枠の縦横比が x:y=1:a となる.

例えば黄金比にしたいなら

set size ratio 2.0/(1.0 + sqrt(5.0))

とする.