为什么制作带有横线的广告不像制作带有横线的 h 那样?

为什么制作带有横线的广告不像制作带有横线的 h 那样?

这是我上一个问题的后续如何使用 unicode-math 获得直立的 \hbar?我正在尝试制作一个d带有横线的 ,就像物理学中用来表示不精确微分的一样(另见如何在 xelatex 中输入不精确微分的符号?如何在 LaTeX 或 LyX 中调用 unicode 字符?d 顶部有一条小线)。我看到字形上的条d似乎相对于字母发生了移动,但我没有看到字符有这种行为h。这种行为是真实的吗?如果是,是什么原因造成的?它会因不同的字体而异吗?可以克服吗?

对值进行实验并\mkern没有使转变消失。

这是我的 MWE:

% !TEX program = lualatexmk
% !TEX encoding = UTF-8 Unicode

\documentclass{article}
\usepackage{unicode-math}
\makeatletter
\AtBeginDocument{%
  \DeclareRobustCommand{\hbar}{{\mathpalette\hbar@\relax\symup{h}}}%
}
\newcommand*{\hbar@}[2]{%
  \makebox[0pt][l]{\raisebox{-0.07\height}{\(\m@th#1\mkern-2mu\mathchar"AF\)}}%
}
\makeatother
% Let's try a \dbar glyph for inexact differentials.
\makeatletter
\AtBeginDocument{%
  \DeclareRobustCommand{\dbar}{{\mathpalette\dbar@{\relax}{\symsfup{d}}}}%
}
\newcommand*{\dbar@}[2]{%
  \makebox[0pt][l]{\raisebox{-0.09\height}{\(\m@th#1\mkern+3mu\mathchar"AF\)}}%
}
\makeatother

\begin{document}
\( \hbar \scriptstyle\hbar \scriptscriptstyle\hbar \)

\( \dbar \scriptstyle\dbar \scriptscriptstyle\dbar \)
\end{document}

以下是 MWE 输出:

输出显示 hbar 和 dbar 之间的差异

更新:经过多次试验,下面的方法似乎有效,但我无法完全解释原因。如果我更改[c]为,[r]我会注意到,无论我提供什么,该栏都不会移动\mkern

\makeatletter
\AtBeginDocument{%
  \DeclareRobustCommand{\dbar}{{\symsfup{d}\mathpalette\dbar@\relax\relax}}%
}
\newcommand*{\dbar@}[2]{%
  \makebox[0pt][c]{\raisebox{-0.07\height}{\(\m@th#1\mkern-6mu\mathchar"AF\)}}%
}
\makeatother

答案1

如果您使用的是unicode-math,最好的选择是从支持 的文本字体插入 đ (U+0111,带笔划的拉丁小写字母 d)。如果您的主字体不支持,您可以使用\setmathrm\setmathsf将您的\mathrm\mathsf字母表更改为支持 的字母表,或者定义一个支持 的新数学字母表\setmathfontface

\documentclass{article}
\tracinglostchars=3
\usepackage{newcomputermodern} % Or your font package of choice.

\newcommand\dbar{\mathsf{đ}}
\newcommand\vardbar{\text{\sffamily\ulcshape\upshape đ}}
\newcommand\mitdbar{\text{\sffamily\ulcshape\slshape đ}}

\begin{document}
\[ \dbar \vardbar \mitdbar
\]
\end{document}

新计算机现代样本

我使用的命令\text有点复杂,因为它们保持权重不变,但设置其他每个轴,但你可能可以摆脱\textnormal{đ}

如果您使用的是旧版 TeX 进行编译,那么从技术上讲,您也可以使用相同的方法,因为 8 位 T3 编码支持此字符。您可以选择字体系列(Computer Modern Roman、Computer Modern Sans Serif、Times、Helvetica、Junicode 或 Linguistics Pro),其中一些支持倾斜形状。

\documentclass{article}
\tracinglostchars=3
\usepackage[T3,T1]{fontenc}
\usepackage[utf8]{inputenc} % The default since 2018
\usepackage{amsmath}

\DeclareTextSymbol{\textdbar}{T3}{"A1}
\DeclareTextSymbolDefault{\textdbar}{T3}
\newcommand\dbar{\textnormal{\textdbar}}
\newcommand\vardbar{\textnormal{\fontfamily{cmss}\selectfont\textdbar}}
\newcommand\mitdbar{\textnormal{\fontfamily{cmss}\slshape\selectfont\textdbar}}

\begin{document}
\[ \dbar\vardbar\mitdbar
\]
\end{document}

Tipa 样品

答案2

这是一种使用堆栈的方法。

\documentclass{article}
\usepackage{unicode-math}
\usepackage{scalerel,stackengine}
\newcommand\dbar{\ThisStyle{\ensurestackMath{%
  \stackengine{-.7\LMpt}{\SavedStyle\mathsf{d}}{\SavedStyle\bar{}%
  \mkern2.25mu}{O}{r}{F}{F}{L}}}}
\begin{document}
\( \dbar \scriptstyle\dbar \scriptscriptstyle\dbar \)
\end{document}

在此处输入图片描述

\mathsf例如,将 更改\mathit为 会导致

在此处输入图片描述

可以通过调整 来更改栏的水平位置2.25mu。通过调整 来更改垂直位置-.7\LMpt

相关内容