我一直在使用数学设计包(特别是使用 garamond 字体),每当我尝试使用时\hbar
,栏就会太高且位于左侧。
为了解决这个问题,我想知道如何将其重新定义\hbar
为一个带有条的 h,我可以移动它直到它看起来美观。
答案1
LaTeX 将其定义\hbar
为\mathchar'26
,后跟 9 个数学单位的退格键 ( \mkern-9mu
),后跟字母h
。或者更具体地说,
\def\hbar{{\mathchar'26\mkern-9muh}% \hbar
为了提供重叠这两个元素(条形图和字母)的灵活性,我们将其拆分为两个单独的组件,重点是将条形图移动到正确的位置,然后仅排版h
。通过简单的 可以向左/向右移动条形图。通过从 获得的\hspace*
宏 可以执行升高/降低条形图\raisemath{<len>}{...}
如何提高下标?:
\makeatletter
\newcommand{\raisemath}[1]{\mathpalette{\raisem@th{#1}}}
\newcommand{\raisem@th}[3]{\raisebox{#1}{$#2#3$}}
\makeatother
与条形图的重叠部分h
由\mathrlap
(由mathtools
包裹)提供了简单的宏定义\NewDocumentCommand
。xparse
包裹。
\documentclass{article}
\usepackage{mathtools}% http://ctan.org/pkg/mathtools
\usepackage{xparse}% http://ctan.org/pkg/xparse
\makeatletter
\newcommand{\raisemath}[1]{\mathpalette{\raisem@th{#1}}}% \raisemath{<len>}{...}
\newcommand{\raisem@th}[3]{\raisebox{#1}{$#2#3$}}
\makeatother
\NewDocumentCommand{\newhbar}{O{0pt} O{0pt}}{% \newhbar[<horz len>][<vert len>]
\ensuremath{\mathrlap{\raisemath{#2}{\hspace*{#1}{\mathchar'26\mkern-9mu}}}h}%
}
\begin{document}
\[
\renewcommand{\arraystretch}{2}%
\begin{array}{rl}
\verb!\hbar!: & \hbar \\
\verb!\newhbar!: & \newhbar \\
\verb!\newhbar[4pt]!: & \newhbar[4pt] \\
\verb!\newhbar[-1pt][1.5pt]!: & \newhbar[-1pt][1.5pt] \\
\verb!\newhbar[2pt][-4pt]!: & \newhbar[2pt][-4pt] \\
\verb!\tfrac{\hbar}{2}!: & \tfrac{\hbar}{2} \\
\verb!\tfrac{\newhbar}{2}!: & \tfrac{\newhbar}{2} \\
\verb!\tfrac{\pi}{\newhbar[0pt][-1pt]}!: & \tfrac{\pi}{\newhbar[0pt][-1pt]}
\end{array}
\]
\end{document}
您可以尝试使用 的可选参数\newhbar[<horz len>][<vert len>]
。第一个参数<horz len>
将栏向左/向右移动,而第二个参数<vert len>
将其向上/向下移动。它们是可选的,但不能为空。可以扩展它以适应这样的空参数。