2

次の出力のクローンを生成するgnuplotスクリプトを作成しようとしています- 絶縁体におけるフォノン分散関係 - Bilz,Kress - Springer Berlin

組み込みたい機能は次のとおり
です-1.ある対称点から別の対称点への遷移を示すマルチプロット-質問はありません
2.wxtターミナルのLatex / MathJaxラベル-可能ですか?
3. 対称点の 2 つの表記法 ([00ζ] と Z など) を
切り替える機能。

他に明らかな機能がある場合は、コメントしてください。
答えが正しいとマークされるには、機能 2 と 3 を進めるための最善の方法について答えてください。

4

1 に答える 1

1

2: いいえ、wxt ターミナルのラベルに LaTeX や MathJax を使用することはできません。しかし、それはインタラクティブな部分だけです。

この場合、 と を使用utf8enhancedて、少なくとも正しいシンボルを取得できます。

set encoding utf8
set termoption enhanced

set xlabel '[00ζ]'
set label at graph 0.5,0.5 'Σ_1(0)'
plot x

印刷品質の画像の場合set terminal cairolatex pdf、ラベルに LaTeX を使用できます。

set terminal cairolatex pdf standalone
set output 'test.tex'
set bmargin 3
set xlabel '$[00\zeta]$'
set label at graph 0.5,0.5 '$\Sigma_1(0)$'
plot x
set output
system('pdflatex test.tex')

ここでは、一重引用符の使用に注意する必要が'あります。そうしないと、一部の文字をエスケープする必要があります。

3 に関して: 2 つのバリアントを切り替える「自動」の方法はありませんが、もちろんすべてのラベルを文字列として定義し、2 つから選択することができます。

latex = 1
if (latex) {
    xlabel = '$[00\zeta]$'
    label1 = '$\Sigma_1(0)$'
} else {
    xlabel = '[00ζ]'
    label1 = 'Σ_1(0)'
}
set xlabel xlabel
set label 1 at graph 0.5,0.5 label1

一般的にはこれでうまくいきますが、gnuplot は LaTeX ラベルの正確な幅と高さを認識していないため、ラベルの位置を微調整する必要があるかもしれません (たとえば、offsetを使用しxlabelたり、異なる位置を使用したりします。その場合、次のことができます。コマンド全体を定義し、後で呼び出します。

latex = 1
if (latex) {
    set_xlabel = 'set xlabel ''$[00\zeta]$'' offset 0,-1'
    set_label1 = 'set label 1 ''$\Sigma_1(0)$'' at graph 0.5,0.5'
} else {
    set_xlabel = 'set xlabel ''[00ζ]'' '
    set_label1 = 'set label 1 ''Σ_1(0)'' at graph 0.5,0.5'
}
set macros
@set_xlabel
@set_label1

を使用する代わりに、次のような関数を定義できる をmacros使用することもできます。eval(set_xlabel)

set_label1(x,y) = sprintf('set label 1 ''$\Sigma_1(0)$'' at graph %f,%f', x, y)
eval(set_label1(0.5,0.5))
于 2013-10-22T08:14:59.137 に答える