为什么 \pounds 在 article 和 ctexart 中的结果不同?

为什么 \pounds 在 article 和 ctexart 中的结果不同?

在ctexart中,代码如下:

\documentclass{ctexart}
\begin{document}
    \verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds
\end{document}

结果如下:
在此处输入图片描述
文章中代码如下:

\documentclass{article}
\begin{document}
    \verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds
\end{document}

结果如下:
在此处输入图片描述
那么你能帮我解答这个问题吗?

答案1

\pounds具有复杂的内部定义以应对现代计算机的原始 OT1 编码,但如果使用 Unicode 字体,它在 xetex 或 luatex 中实际上没有任何意义。我们可能应该调整 fontspec 以便默认情况下工作,但简单地定义\pounds为 £ 就足够安全了:

\documentclass{ctexart}
\def\pounds{£}
\begin{document}
    \verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds
\end{document}

在此处输入图片描述

要获取遵循数学字母命令的版本,您可以执行以下操作:

在此处输入图片描述

\documentclass{ctexart}
\def\pounds{£}

\AtBeginDocument{%
\sbox0{$\mathit{x\xdef\mathitfam{\the\fam}}$}% set up mathit
\Umathcode `\£ 7 \mathitfam `\£
}

\showoutput
\begin{document}
    \verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds

$a£\pounds + \mathsf{b£\pounds} + \mathbf{c£\pounds} + \mathit{d£\pounds}$
\end{document}

困难在于您需要从 mathit 字体中提取默认字体,因为普通数学斜体没有正确的字符。

答案2

如果使用 运行,代码将产生预期的输出pdflatex

使用 XeLaTeX 或 LuaLaTeX 时,ctexart定义\textfont5(或分配给 的任何系列\mathit)在 TU 编码中为拉丁现代斜体,而在 OT1 编码中它仍为计算机现代斜体article

由于在数学模式下\pounds被定义为\mathsterling\mathsterling

\mathit{\mathchar"7024}

您将获得一个带有 的美元符号ctexart

您可以使用以下适用于所有引擎的解决方法来解决该问题。

\documentclass{ctexart}

\usepackage{iftex}

\iftutex
  \renewcommand{\mathsterling}{\mathit{\Umathchar"7 "0 "A3}}
\fi

\begin{document}

\verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds

\end{document}

在此处输入图片描述

\mathsterling但是,如果您始终使用 (Xe|Lua)LaTeX 来尊重当前数学系列(并默认生成直立的英镑符号),那么修改可能是有意义的:

\documentclass{ctexart}

\usepackage{iftex}

\iftutex
  \Umathchardef\mathsterling="7 "0 "A3
\fi

\begin{document}

\verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds

$\pounds\mathit{\pounds}\mathbf{\pounds}\mathsf{\pounds}$

\end{document}

在此处输入图片描述

如果你想要默认使用斜体,你可以这样做

\documentclass{ctexart}

\usepackage{iftex}

\iftutex
  \RenewDocumentCommand{\mathsterling}{}{%
    \ifnum\fam<0
      \mathit{\mathsterlingchar}
    \else
      \mathsterlingchar
    \fi
  }
  \Umathchardef\mathsterlingchar="7 "0 "A3
\fi

\begin{document}

\verb|$\pounds$->|$\pounds$,\medspace \verb|\pounds->|\pounds

$\pounds\mathit{\pounds}\mathbf{\pounds}\mathsf{\pounds}$

\end{document}

在此处输入图片描述

相关内容