![如何在数学环境中排版包含带变音符号的字母的多字母标识符?](https://linux22.com/image/260677/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%95%B0%E5%AD%A6%E7%8E%AF%E5%A2%83%E4%B8%AD%E6%8E%92%E7%89%88%E5%8C%85%E5%90%AB%E5%B8%A6%E5%8F%98%E9%9F%B3%E7%AC%A6%E5%8F%B7%E7%9A%84%E5%AD%97%E6%AF%8D%E7%9A%84%E5%A4%9A%E5%AD%97%E6%AF%8D%E6%A0%87%E8%AF%86%E7%AC%A6%EF%BC%9F.png)
这是编辑。请参阅下面的原始问题。
在数学模式中,我想使用包含整个单词的标识符。该单词不是英文,并且包含带变音符号的字母。此类单词的示例是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 接受的解决方案中的一个问题。