\polyset 和希腊字母

\polyset 和希腊字母

polynom必须告知样式(texlive 2012 中的版本“2006/04/20 0.17 (CH,HA)”)哪些标记代表变量。手动的有这样一个例子:

\polyset{vars=XYZ\xi,  % make X, Y, Z, and \xi into variables
         delims={[}{]}}% nongrowing brackets

当我尝试在最小文档中排版时

\documentclass{article}
\usepackage{polynom,amsmath,amssymb}
\begin{document}
\polyset{vars=XYZ\xi,delims={[}{]}}
\polylongdiv{\xi^2-1}{\xi-1}
\end{document}

我收到以下错误消息:

! Missing \endcsname inserted.
<to be read again> 
                   \xi 
l.4 \polyset{vars=XYZ\xi,delims={[}{]}}

因此,将希腊字母视为变量标记似乎存在问题。有人能提出一种解决这个问题的方法吗,即在多项式长除法中实际排版 ξ 或类似的希腊字母作为变量?

答案1

手册对此似乎是错误的:你必须使用简单的字母来表示多项式;但你可以使用一种巧妙的办法:

\documentclass{article}
\usepackage{polynom,amsmath,amssymb}
\begin{document}

\begingroup\mathcode`A=\xi
\polyset{vars=A}
\polylongdiv{A^2-1}{A-1}
\endgroup

\end{document}

只需选择一个未使用的字母作为你的希腊字母,瞧瞧

在此处输入图片描述


需要做一点解释。当 TeX 处于数学模式时,它将字母(更准确地说,是类别 11 或 12 的字符标记)视为数学字符,这些字符具有数学码附在它们上面。控制序列表示数学代码,这是希腊字母的情况:定义在fontmath.ltx

\DeclareMathSymbol{\xi}{\mathord}{letters}{"18}

最终归结为原始语句

\mathchardef\xi="0118

其中第一位数字0表示 TeX\xi是一个普通符号;第二位数字是“数学组”(1 对应于letters);第三和第四位数字表示字体中应从哪个位置取出符号。

\mathcode`A=<number>

我们分配A一个具有相同规格的数学代码;实际上我们不需要知道与 关联的数学代码是什么\xi,因为当 TeX 语法需要数字时,用 定义的任何控制序列\mathchardef都可以用作数字。因此

\mathcode`A=\xi

我们说的是,A从此刻起,数学公式中的任何一个都将表现得像\xi。当然,这尊重分组,所以所有这些都发生在一个组中;我用 和 来分隔它\begingroup\endgroup{}很好,但在某些情况下,前者分隔符比后者造成的问题更少。

相关内容