代码
%\RequirePackage{fix-cm}%%% makes no difference
\documentclass{standalone}
\usepackage{amsfonts}
%\usepackage{lmodern}%%% makes no difference
\begin{document}
\({}_{N_n^m}\) \({}_{\mathbb{N}_n^m}\)
\end{document}
生产
该术语的含义是 {1,2,...,n} × ... × {1,2,...,n} (m 次),即 {1,2,...n}^m。我在 中使用这个术语\[\bigcup_{b\in\mathbb{N}_n^m} \prod_{i=1}^n \mleft(A_i\setminus\mleft(\bigcup_{\substack{1\le j\le m\\b_j=i}}P^j_i\mright)\mright)\]
。
对我来说,这个字母的m
位置太低了,显然与前面的高度无关N
。如何m
在所有可能的上下文中自动放置在合适的高度?也就是说,我想要一个宏(比如,在 LaTeX3 中),例如
\NewDocumentCommand{\cubeOfNaturals}
{ m m }
{\mathbb{N}\c_math_subscript_token{#1}^{#2}}
除非它#2
自动放置在适当的高度。
答案1
一个技巧可能是强制 TeX 不使用狭窄的风格:
\documentclass[border=4]{standalone}
\usepackage{amsfonts}
\makeatletter
\newcommand{\cubeOfNaturals}[2]{%
\mathpalette\cube@of@naturals{{#1}{#2}}%
}
\newcommand{\cube@of@naturals}[2]{%
\cube@of@naturals@{#1}#2%
}
\newcommand{\cube@of@naturals@}[3]{%
#1\mathbb{N}_{#2}^{#3}%
}
\makeatother
\begin{document}
\({}_{\cubeOfNaturals{n}{m}}\) \({}_{\mathbb{N}_n^m}\)
\end{document}
答案2
有个想法:\mathstrut
在上标位置插入“top-smashed”。具体来说,插入\mathstrut
一个基线以上高度已被粉碎。粉碎对象的顶部(通过\smash[t]{...}
指令)不会改变其在基线以下的深度。(Aside:\mathstrut
定义为\vphantom{)}
,即,它是一个具有圆括号高度和深度的不可见对象。)
\documentclass{article}
\usepackage{amsfonts,mathtools} % mathtools loads amsmath, which provides '\smash[t]' macro
\newcommand{\Nnm}{N_n^{m\smash[t]{\mathstrut}}} % smash away the top of '\mathstrut'
\newcommand{\NNnm}{\mathbb{N}_n^{m\smash[t]{\mathstrut}}}
\begin{document}
$N_n^m$ $\mathbb{N}_n^m$ vs.\ $\Nnm$ $\NNnm$
\bigskip
$\displaystyle \bigcup_{b\in\NNnm} \prod_{i=1}^n \biggl(A_i \setminus
\biggl(\,\smashoperator[r]{\bigcup_{\substack{1\le j\le m\\b_j=i}}}P^j_i\biggr)\biggr)$
\end{document}