避免变体希腊字母的方法

避免变体希腊字母的方法

使用虚拟希腊键盘和以下软件包可以直接实现希腊 Unicode 字符(例如 θ)

\usepackage[mathletters]{ucs}
\usepackage[utf8]{inputenc}

然而,PDF 中显示的字符始终是希腊语变体,例如\vartheta与 相对\theta

\let\vartheta\theta除了针对每个角色之外,还有其他方法可以避免这种情况吗?

答案1

theta 的 Unicode 定义是:

U+03b8 GREEK SMALL LETTER THETA

U+03d1 GREEK THETA SYMBOL

其中第一个是你问题中提到的那个,第二个是更为曲折的开放的那个。

然而,在包设置的编码中,ucs默认情况下会给你一个 U+03b8 字符\texttheta(如果你加载了正确的字体编码,它可能会在文本模式下给你正确的字符,我得到了未定义的命令)但是如果你使用[mathletters]片段中的选项,它会切换到使用定义

\uc@dclc{952}{mathletters}{\ensuremath{\vartheta}}%

在文件中uni-3.def

即,假设您想要数学模式中的 theta 符号字符。因此,\let您建议的方法是一种方法,或者您可以覆盖此定义:

\documentclass{article}

\usepackage[mathletters]{ucs}
\usepackage[utf8x]{inputenc}

\makeatletter
\uc@dclc{952}{mathletters}{\ensuremath{\theta}}%
\makeatother

\begin{document}

 (e.g. θ)

\end{document}

生成结果:

在此处输入图片描述

全套\var...在uni-3.def

5 matches for "\\var" in buffer: uni-3.def
    174:\uc@dclc{949}{mathletters}{\ensuremath{\varepsilon}}%
    183:\uc@dclc{952}{mathletters}{\ensuremath{\vartheta}}%
    210:\uc@dclc{961}{mathletters}{\ensuremath{\varrho}}%
    213:\uc@dclc{962}{mathletters}{\ensuremath{\varsigma}}%
    225:\uc@dclc{966}{mathletters}{\ensuremath{\varphi}}%

答案2

如果您想避免使用 ucs (例如与 biblatex 冲突),您可以使用这里提供的 lgrxenc.def 和 lgrenc.dfu:http://milde.users.sourceforge.net/LGR/

lgrenc.dfu 映射例如 U+03BB,\texttheta我认为它应该是您想要的符号。

答案3

看来您使用的是过时的版本ucs。从 2012 年 4 月的 2.0 版开始,使用该mathletters选项时,普通和变体希腊字符都会映射到正确的宏。请参阅我的博客文章ucs LaTeX 软件包的新版本

如果您必须坚持使用旧ucs版本,您还可以修改从字符到 TeX 代码的映射,这比通过 重新定义希腊字母宏更简洁\let。但是,\uc@dclc不建议使用 ,如 David Carlisle 的回答中所述。要使用的用户级命令是\DeclareUnicodeCharacter。请参阅软件包文档

相关内容