如何在数学环境中排版包含带变音符号的字母的多字母标识符?

如何在数学环境中排版包含带变音符号的字母的多字母标识符?

这是编辑。请参阅下面的原始问题。

在数学模式中,我想使用包含整个单词的标识符。该单词不是英文,并且包含带变音符号的字母。此类单词的示例是kľúč

我曾尝试在数学环境中使用类似\mathit{kľúč}或 的命令\mathnormal{kľúč}。当没有变音符号时,它们效果很好,例如,\mathit{kluc}将单词呈现在一起,字母之间没有难看的空格。当存在变音符号时,字母会与空格一起呈现,例如,\mathit{kľúč}数学环境中的命令会产生类似k ľ úč而不是 的内容klúč

如何在数学环境中排版包含变音符号的多字母标识符?


原始问题文本:

标题说明了一切。我想在数学环境中使用诸如、、等字母ľ作为数学标识符 () 的一部分。但是与标准英文字母不同ú,它们前后都带有令人不快的空格。我该如何解决这个问题?šô\mathit

使用命令的示例:

$\left\langle \mathit{kl\mkern-5mu\mathchar19\acute{u}\check{c}},\mathit{hodnota}\right\rangle $

这是当我使用图形编辑器编辑该表达式时 Lyx 生成的 LaTeX 代码。预期输出类似于<kľúč, hodnota>(英文为<key, value>),但我得到的更像是<k ľ ú č, hodnota>

答案1

允许的字符\mathit只是纯 ASCII,上面可能有数学符号。对于单词,最好使用,如果加载了 ,\textit它将改变下标和上标的大小。amsmath

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[slovak]{babel}
\usepackage{amsmath}

\begin{document}
$\langle\textit{kľúč}, \textit{hodnota}\rangle$

$A_\textit{kľúč}$
\end{document}

在此处输入图片描述

如果 LyX 无法提供\textit,那么这是 LyX 的问题,而不是 LaTeX 的问题。

答案2

在我看来这实际上是文本,而不是数学。

如果您有许多这样的结构,我建议创建一个类似的宏来处理它们:

\newcommand{mykeyval}[2{%
  \langle\text{\textit{#1}, \textit{#2}}\rangle}

这将需要\usepackage{amsmath}定义\text。它将以这种方式使用,并且仅在数学环境中有效:

... \mykeyval{xxx}{yyy} ...

只有尖括号才是真正的数学;\text允许您在数学环境中嵌入文本字符串。在这种情况下,我更喜欢非斜体逗号,这就是我退出斜体逗号的原因。

(该答案的早期版本建议使用拖船输入伪代码的构造,但按照其通常的表述,在\text嵌入数学环境中无法正常工作,因此此处已删除该建议。)

答案3

如果您使用 XeLaTeX 或 LuaLaTeX 并加载unicode-math或合适的字体包,则可以使用带有变音符号的字母和数学字体。它不适用于默认字体,因此您必须指定\mathit或其他内容,但您不必使用文本字体。

\documentclass{article}
\usepackage{unicode-math} % or libertinus or other font packages
\begin{document}

\textsf{Sans-serif text with serif math $\langle\mathit{kľúč}, \mathit{hodnota}\rangle$}

\end{document}

无衬线字体环境中带变音符号的衬线数学文本示例

无衬线文本是为了表明周围文本的字体设置不会影响数学文本,这是 egreg 接受的解决方案中的一个问题。

相关内容