移动 hbar 上的栏

移动 hbar 上的栏

我一直在使用数学设计包(特别是使用 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包裹)提供了简单的宏定义\NewDocumentCommandxparse包裹

\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}

可以修改的 hbar

您可以尝试使用 的可选参数\newhbar[<horz len>][<vert len>]。第一个参数<horz len>将栏向左/向右移动,而第二个参数<vert len>将其向上/向下移动。它们是可选的,但不能为空。可以扩展它以适应这样的空参数。

相关内容