
Используя виртуальную греческую клавиатуру и следующие пакеты, можно напрямую реализовать греческие символы Unicode (например, θ)
\usepackage[mathletters]{ucs}
\usepackage[utf8]{inputenc}
Однако отображаемые в PDF-файле символы всегда представляют собой греческие варианты, \vartheta
а не \theta
.
Есть ли способ избежать этого, кроме как \let\vartheta\theta
для каждого персонажа?
решение1
хмммм
Определения 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
То есть, предполагает, что вам нужен символ тета в математическом режиме. Так что \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
. Начиная с версии 2.0 от апреля 2012 года, как обычные, так и вариантные греческие символы сопоставляются с правильными макросами при использовании опции mathletters
. См. статью в моем блогеНовый выпуск пакета ucs LaTeX.
Если вам нужно придерживаться старой ucs
версии, вы также можете изменить сопоставления символов с кодом TeX, что чище, чем переопределение макросов греческих букв через \let
. Однако использование \uc@dclc
, как в ответе Дэвида Карлайла, не рекомендуется. Команда уровня пользователя для использования — \DeclareUnicodeCharacter
. Смотритедокументация пакета.