返回介绍

GMT 入门

GMT 实例

GMT 进阶

附录

其他

LaTeX 表达式

发布于 2023-08-10 21:46:57 字数 4032 浏览 0 评论 0 收藏 0

贡献者

周茂


绘图过程中,用户可能会需要特殊字符标注或者显示公式。GMT 已经可以实现打印简单的特殊字符转义序列,但如果想实现更加复杂的特殊字符和公式,则需要借助功能强大的 LaTeX。

语法

GMT 自 6.2 开始支持在文本字符串中嵌入 LaTeX 表达式,这些文本字符串包括使用 -B 选项 在标题、子标题或标签中指定的字符串,也包括通过 text 模块添加的单行文本。GMT 中 LaTeX 表达式可以用两种不同的写法表示:

  1. 使用 @[ ... @[,如 Plotting @[\Delta \sigma_{xx}^2@[

  2. 使用 <math> ... </math>,如 Plotting <math>\Delta \sigma_{xx}^2</math>

备注

  1. 若要在 GMT 6.2 以前的版本使用 LaTeX,请参考 https://blog.seisman.info/gmt-latex/

  2. LaTeX 数学符号可参考:《一份(不太)简短的 LaTeX2ε 介绍》 中的符号表章节

下面展示了一个在 GMT 中使用 LaTeX 表达式的例子

#!/usr/bin/env bash
gmt begin GMT_latex
    gmt basemap -R-200/200/0/50 -JX15c/4c \
        -BSwen+t"Use <math>\Delta g = 2\pi\rho Gh</math>" \
        -Bxaf+l"@[\nabla^4 \psi - \Delta \sigma_{xx}^2@[ (MPa)"
    gmt text -F+f15p << EOF
0 15 Newton's integral: <math>V = \int_{v} \frac{\mathrm{d}m}{l}</math>
0 30 Euler's formula: @[e^{ix} = \cos x + i \sin x@[
EOF
gmt end show
http://www.wenjiangs.com/wp-content/uploads/2023/docimg24/498-kjctx1tczv0.png

在轴标签、标题以及 text 模块中使用 LaTeX 表达式

LaTeX 是一个庞大且复杂的排版系统,有许多可选包,用户安装的 LaTeX 需包括所有 GMT 必须的包。通过包管理器安装 LaTeX 的方法请见 GMT Wiki。其中,GMT 必须的包和字体包括:

  • 必需包:fontenc 和 inputenc

  • 必需字体:helvet、mathptmx、courier、symbol、avantgar、bookman、newcent、mathpazo、zapfchan 和 zapfding

上述必需包已经默认包含在所有的 LaTeX 发行版中,必需字体则可以在终端中执行如下命令安装:

tlmgr install collection-fontsrecommended

上述字体列表中的字体均可以匹配 GMT 中的字体。因此,如果用户通过 FONT_TITLE 修改了标题默认的字体,GMT 将在后台生成的 LaTeX 脚本中把该字体设置为默认字体。这种设置可以确保标题最终渲染的字体和用户设置的字体一致。

技术细节

GMT 中显示 LaTeX 表达式的原理:如果在文本字符串中发现特殊标识(即 @[ 对或 <math> </math> 对),GMT 将使用 latexdvips 命令(需提前安装 LaTeX 环境)把整行转换为 EPS 文件。然后,将该 EPS 文件放置在对应的位置。

这里通过一个实例来帮助用户排查 LaTeX 安装中可能存在的问题。假设用户使用 basemap 制作的图的标题为 -B+t"Use @[\Delta g = 2\pi\rho Gh@["。GMT 会为该 LaTeX 表达式创建一个临时目录,其中包含一个名为 gmt_eq.tex 的文件:

\documentclass{article}
\usepackage[T1]{fontenc} \usepackage[utf8]{inputenc}
\usepackage{helvet}
\begin{document}
\thispagestyle{empty}
\fontfamily{phv}\selectfont
Use $\Delta g = 2\pi\rho Gh$
\end{document}

由于 FONT_TITLE 设置为 Helvetica,LaTeX 文件将默认字体修改为 Helvetica( helvet 包, 代码为 phv ),该 tex 文件会被转换为 DVI 文件:

latex -interaction=nonstopmode gmt_eq.tex > /dev/null

接着,进一步将结果转换为 EPS 文件:

dvips -q -E gmt_eq.dvi -o equation.eps

这两个命令通过 gmt_eq.sh 脚本(在 windows 下为 gmt_eq.bat)执行。如果命令成功执行,GMT 将读取 EPS 文件 equation.eps 并放置在标题的位置。如果脚本由于某些原因执行失败,GMT 将报错并指导用户在临时目录中进行进一步排查。此时,用户可以运行 latex 命令来查看报错信息(但要去除重定向 > /dev/null)。通常情况下,报错信息会显示问题出现的原因,即缺少某种字体或其他信息。如果用户不能独立解决报错,请在 GMT 官方 GitHub 上提 issue 并提供 LaTeX 脚本和报错信息。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文