![避免变体希腊字母的方法](https://linux22.com/image/476285/%E9%81%BF%E5%85%8D%E5%8F%98%E4%BD%93%E5%B8%8C%E8%85%8A%E5%AD%97%E6%AF%8D%E7%9A%84%E6%96%B9%E6%B3%95.png)
使用虚拟希腊键盘和以下软件包可以直接实现希腊 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
。请参阅软件包文档。