我想在乳胶中写一个包含一些词条的文本。
所以我们可以使用命令
\begin{Lemma}
...
\end{Lemma}
正确的??
我们可以用希腊语代替“Lemma”吗?
当我写作时
\begin{\textgreek{Λήμμα}}
...
\end{\textgreek{Λήμμα}}
我收到一个错误...
我能做什么??
答案1
您可以使用 XeLaTeX 或 LuaLaTeX 来完成此操作,但不能使用 pdfLaTeX。
原因是 TeX(pdfTeX 所基于的版本)诞生于 Unicode 诞生之前。因此 TeX 本身并不理解 Unicode,这会导致一些“问题”。
让我们看一下 Unicode 字符Λ
U+039B 希腊大写字母 LAMDA。当您的编辑器设置为 UTF-8 并输入 时Λ
,编辑器实际上会记录二文件中的字符(最好是字节):<CE><9B>
。任何读取同一文件的 Unicode 兼容程序都会将字节识别<CE>
为双字节编码字符的 UTF-8 前缀,查看下一个字节,在找到 之后<9B>
,它会将这对字节解释为Λ
仿佛它从一开始就是一个独特的角色。
TeX 的情况则不同。它无法将两个、三个或四个字节的 UTF-8 字符解释为从一开始就是一个字符,因为 TeX 只识别字节。因此,在找到<CE><9B>
它时,它只知道这两个字节。
幸运的是,TeX 可以理解宏定义,它可以用来仿真UTF-8。任何字符都可以变成宏,事实上,\usepackage[utf8]{inputenc}
字节<CE>
也可以变成宏。这个宏吸收下一个标记,并从中生成其他宏;对于<CE><9B>
生成的宏,\textLambda
它是 ,稍后将被解释为打印大写的 lambda。
因此,你想要的\begin{Λήμμα}
不是给 TeX 解释一个字符序列来找到环境的名称,而是给 TeX 解释一个指令序列来打印希腊字母中的一个单词。
当\begin{lemma}
发现时,宏 \lemma
执行(定义在\newtheorem{lemma}
处理时)。使用 pdfLaTeX 时,\begin{Λήμμα}
如果不放弃几个更有用的构造,就不可能实现。
建立并接受\newtheorem
这一点并不困难\newtheorem{Λήμμα}{Λήμμα}
,甚至重新定义\begin
并正确解释这一点也不困难\begin{Λήμμα}
。然而,这会破坏几个软件包:利弊平衡过于偏向弊端。
你能做
\newtheorem{Λήμμα}{Λήμμα}
和
\begin{Λήμμα}
...
\end{Λήμμα}
如果您使用 XeLaTeX 或 LuaLaTeX 来处理文档。但是,我认为这样做并没有什么真正的好处:在我看来,代码可重用性更为重要。
为了让事情更清楚:你可以做
\newtheorem{lemma}{Λήμμα}
可以使用任何引擎(如果引擎是 pdfLaTeX,则必须启用希腊语支持)。打印的标签可以是任何可打印的内容。象征性的源代码中使用的标签应为 ASCII 字符。
答案2
我猜你真正想要的是在你的格式化文档中看到单词“Λήμμα”;如何在那里找到它并不特别重要。正如@egreg在他的回答中所解释的那样,在命令名称的定义中包含非英语字符并不容易。幸运的是,该amsthm
包(如果你正在使用,那么你大概正在使用它\newtheorem
)可以让你无需在宏名称中使用希腊语就可以完成你想要的操作。
该命令的\newtheorem
语法为:\newtheorem{commandname}{Displayed name}
。使用它来定义你自己的词元环境,如下所示:
\newtheorem{mylemma}{Λήμμα}
使用您想要的任何名称代替mylemma
,但只能使用英文字母。如果您的文档设置为在常规文本中处理希腊文(在文档的“正文”中),则此定义应该有效。然后您只需输入\begin{mylemma}
而不是\begin{Lemma}
,您就会看到Λήμμα 1等等。
顺便说一句,如果你想用希腊语写文字,你必须切换到 XeTeX 或 LuaTeX(我对它们了解不多,无法进行比较,但两者都可以)。特别是如果你是 latex 新手,我猜你是新手。根本不值得弄清楚如何让 pdftex 与 unicode 一起工作,因为替代方案对于此目的来说要强大得多(并且允许您使用您最喜欢的希腊字体)。
编辑:这是一个最小的可编译示例,因为您似乎不确定如何使用定理环境。(需要使用 XeLaTeX 进行编译。)如果您将来有疑问,请使用此类示例的版本。
\documentclass{article}
\usepackage{amsthm}
\newtheorem{mylemma}{Λήμμα}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\begin{document}
\begin{mylemma}
x = x
\end{mylemma}
\begin{mylemma}
y = y
\end{mylemma}
\end{document}