我正在寻找一种方法来减少作为索引出现的加号和减号的默认大小。
这是一个 dirty tex 示例:
One has the following commutation relations:
\[ \left\{ \, \begin{aligned}
\partial_k \, \partial_p &= \partial_{p-1} \, \partial_k
& \mathrm{if} & \quad k < p \\
\partial_k \, \partial_p &= \partial_p \, \partial_{k+1}
& \mathrm{if} & \quad k \geq p
\end{aligned} \right. \]
其结果为:
我的问题是,+
和符号比和索引-
占用更多空间。如果我能得到像之前的代码等宽字体一样好看的东西,我会非常欣慰。 p
k
有谁知道我怎样才能实现这个目标?
完整的 MWE:
\documentclass{article}
\begin{document}
\[ \partial_k \partial_p = \partial_{p-1}\partial_k
\quad \mathrm{if} \quad k < p \]
\[ \partial_k \partial_p = \partial_p\partial_{k+1}
\quad \mathrm{if} \quad k \geq p \]
\end{document}
答案1
以下基于 LuaLaTeX 的解决方案可能会让您感兴趣。该解决方案包括 (a) 一个名为 的 Lua 函数smaller_plus_minus
,它扫描所有输入行以查找-
和+
的出现位置里面下标或上标组,如果找到,则用相关符号的较小版本替换这些出现的情况,以及 (b) LaTeX 宏来激活和停用 Lua 函数。每个下标或上标组允许有多个-
实例+
。
这里的主要工作假设是,下标和上标内容始终由一对匹配的花括号({
和}
)分隔,例如a_{p-q}
和b^{u+v}
。Lua 函数将不是a_-
对或的实例进行操作b^+
。我相信这不是什么限制。
Lua 函数当前设置为对所有输入进行操作,包括可能位于逐字类环境中的材料。这大概是不可取的。如果您的文档包含逐字类材料,我建议您在\DeactivateSmallerPlusMinus
相关材料开始之前运行 - 并\ActivateSmallerPlusMinus
在逐字类材料结束之后运行。
老实说,我认为减小下标和上标材料的+
尺寸不是一个好主意。-
% !TeX program = lualatex
\documentclass{article}
\usepackage{mathtools} % for "dcases" env.
%% Lua-side code
\usepackage{luacode}
%% Lua-side code
\usepackage{luacode}
\begin{luacode}
local function sub_to_tiny ( u , v )
return u .. v:gsub ( "[%+%-]" , "\\mathrel{\\vcenter{\\hbox{\\tiny$%0$}}}" )
end
function smaller_plus_minus ( s )
return s:gsub ( "([_%^])%s-(%b{})" , sub_to_tiny )
end
\end{luacode}
%% LaTeX-side code
\newcommand\ActivateSmallerPlusMinus{\directlua{luatexbase.add_to_callback
( "process_input_buffer", smaller_plus_minus, "smaller_plus_minus" )}}
\newcommand\DeactivateSmallerPlusMinus{\directlua{luatexbase.remove_from_callback
( "process_input_buffer", "smaller_plus_minus" )}}
\AtBeginDocument{\ActivateSmallerPlusMinus} % activate lua function by default
\begin{document}
$\displaystyle\begin{dcases}
\partial_k\partial_p = \partial_{p-1}\partial_k & \text{if $k < p$} \\
\partial_k\partial_p = \partial_p\partial_{k+1} & \text{if $k \geq p$}
\end{dcases}$
\medskip
$\partial_{p-q}$, $\partial_{k+\ell}$, $a_{--}$, $b^{++}$
vs.\par
\DeactivateSmallerPlusMinus % remove lua function from callback
$\partial_{p-q}$, $\partial_{k+\ell}$, $a_{--}$, $b^{++}$
\end{document}