如何暂时用希腊字符替换拉丁字符

如何暂时用希腊字符替换拉丁字符

我经常输入包含许多希腊字符的方程式,输入所有希腊字符的命令会很麻烦。我想创建一个命令或环境,用类似的希腊字符替换拉丁字符。例如,\greek{abge}或之类的命令\begin{greek}abge\end{greek}将显示与相同的内容\alpha\beta\gamma\epsilon

我曾尝试使字母活跃起来,以便我可以使用类似的东西\let a\alpha,但这种方法的问题在于我无法将它们用作命令的一部分 - 我希望能够拥有类似\greek{a\dot{b}ge}显示为的东西greek{\alpha\dot{\beta}\gamma\epsilon}

我还尝试使用DeclareUnicodeCharacter替换a字母字符,但出现错误,因为 的 unicode 值a小于00A0。还有其他方法可以实现吗?

答案1

填在表格中:

\documentclass{article}

\newcommand{\greek}[1]{\begingroup\setuplatintogreek#1\endgroup}

\newcommand{\setuplatintogreek}{%
  \mathcode`a=\alpha
  \mathcode`b=\beta
  \mathcode`g=\gamma
  \mathcode`d=\delta
  \mathcode`e=\varepsilon
  %...
}

\begin{document}

$abgde+\greek{abgde}$

\end{document}

在此处输入图片描述

答案2

这个包正是为解决这类问题而tokcycle设计的。

我只实现了少量希腊语,但您只需要\tcmapto z\zeta为每个新映射添加一个类型语句。在 MWE 中,我还使用|...|转义字符来转义原始拉丁语。宏会自动截取并保留名称的拉丁语解释。环境的所有分组考虑因素\greek都保留在转换后的输出中。

\documentclass{article}
\usepackage{tokcycle}
\tokcycleenvironment\greek%     NEW TOKCYCLE ENVIRONMENT:
{\addcytoks[4]{\tcremap{##1}}}% HOW TO TREAT CHARACTERS
{\processtoks{##1}}%            HOW TO TREAT GROUP CONTENTS
{\addcytoks{##1}}%              HOW TO TREAT MACROS
{\addcytoks{##1}}%              HOW TO TREAT SPACES
\newcommand*\tcmapto[2]{\expandafter\def\csname tcmapto#1\endcsname{#2}}
\newcommand*\tcremap[1]{\ifcsname tcmapto#1\endcsname
  \csname tcmapto#1\expandafter\endcsname\else\expandafter#1\fi}
\tcmapto a\alpha \tcmapto b\beta \tcmapto e\epsilon 
\tcmapto g\gamma \tcmapto p\pi
\begin{document}
\[
y = \greek a^2b\frac{2e}{g + p^|x|}\endgreek + x
\]
\end{document}

在此处输入图片描述

我编辑了答案不是\expanded由于并非每个人都安装了更新的 TeX,因此请使用。因此,\addcytoks[4]{...}表示在存储结果之前对参数执行 4 次扩展,这足以实现目标。在存储结果之前对参数\addcytoks[x]{...}调用的替代语法。使用该选项,宏也可以简化,方法是消除s,如下所示:\expanded[x]\tcremap\expandafter\newcommand*\tcremap[1]{\ifcsname tcmapto#1\endcsname\csname tcmapto#1\endcsname\else#1\fi}

注意:MikTeX 无法正确加载软件包。您必须手动将 tokcycle.tex 下载到您的localtexmfat \tex\generic\tokcycle\tokcycle.tex。请参阅https://www.ctan.org/pkg/tokcycle

答案3

您可能觉得,与其使用 LaTeX 手动定义输入字母和希腊字母之间的映射,不如直接将希腊字母原样输入到文档中更方便。为此,您需要使用 XeLaTeX 或 LuaLaTeX、软件包unicode-math、OpenType 数学字体和允许直接输入希腊字母的键盘布局。前三个可能与您的 TeX 发行版捆绑在一起。

键盘布局由操作系统控制。基本上,您有两个选择:

  1. 您可以配置操作系统的键盘设置,这样除了您通常使用的布局之外,还可以使用标准希腊语布局,并且可以使用键盘快捷键轻松地在两者之间切换。(Ctrl+ Alt+k是一个常见的建议,但我更喜欢CapsLock为此重新映射键。)这种方法的优点是它需要的设置很少,并且几乎可以在任何现代操作系统上运行。幸运的是,标准希腊语键盘布局通常将希腊字母放在与拉丁 QWERTY 等价物相同的位置(a给予αs给予σ等),因此您不必花太多时间学习要输入哪些键。

  2. 您可以切换到与常用键盘布局类似的键盘布局,但该布局也提供对希腊字母的访问,可能是通过使用AltGr(即右键Alt)组合键或“死希腊”键来实现的。例如,大多数 GNU/Linux 发行版使用的 X.Org 服务器包含一些这样的键盘布局(适用于法语、德语和保加利亚语,但似乎不适用于英语)。

    如果您的操作系统没有附带合适的键盘布局,您可以自己创建一个(按照现有的键盘布局示例,在 GNU/Linux 上,它们通常位于 中/usr/share/X11/xkb/symbols)。或者,同样在 GNU/Linux 上,您可以简单地调用以下命令作为快速解决方案:

    xmodmap -e 'keycode 108 = dead_greek Meta_R Alt_R Meta_R'
    

    此命令将您的AltGr键重新映射为“死希腊”键,您可以使用该键以与上面第一个选项中描述的方式大致相同的方式编写希腊字符。这意味着,例如,您可以σ通过按AltGr+ sΣAltGr+ Shift+s等来获得。请注意,此命令仅对您当前的登录会话有效;要使更改永久生效,您需要将其添加到 shell 的启动脚本中(例如,$HOME/.bashrc对于 bash)。

    其他操作系统也有类似的解决方案,但其中一些可能需要您安装额外的软件。如果您使用的是 Microsoft Windows,您可能需要查看Microsoft 键盘布局创建器

设置好键盘布局后,您可以使用它直接输入如下文档,这些文档必须使用 XeLaTeX 或 LuaLaTeX 进行编译:

\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\begin{document}
$αβγδεφη$
\end{document}

相关内容