答案1
下面使用与 ; 中的斜线类似的斜线\hslash
,但位置较低,因此不会将符号误认为是“t”。
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}% for \iotaslashB
\usepackage{amssymb} % for comparison with \hslash
\makeatletter
\newcommand{\iotaslash}{{\mathpalette\iotaslash@\relax}}
\newcommand{\iotaslash@}[2]{
\raisebox{-0.6\height}[0pt][0pt]{%
\rotatebox[origin=Bl]{15}{$\m@th#1{\mkern-1mu\mathchar'26}$}%
}%
\mkern-9.5mu\nonscript\mkern-1mu
\iota
\mkern1mu
}
\makeatother
\begin{document}
% the \vrule shows the left margin
\vrule width 0.1pt$\iotaslash$ $\hslash$ $\frac{\iotaslash}{4}$
\vrule width 0.1pt$\hslash$
% compare the bounding boxes
\fboxsep=0pt \fboxrule=0.1pt
\fbox{$\iotaslash$}
\fbox{$\iota$}
\end{document}
它在 scriptstyle 中运行(可能在 scriptscriptstyle 中效果不太好)。
答案2
如果你想尝试这个受此启发的代码回答. 它使用tikz
而不是cancel
。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\newif\ifCancelX
\tikzset{X/.code={\CancelXtrue}}
\newcommand{\Cancel}[2][]{\relax
\ifmmode%
\tikz[baseline=(X.base),inner sep=0pt] {\node (X) {$#2$};
\tikzset{#1}
\draw[#1,overlay,shorten >=-1pt,shorten <=-1pt] ($ (X.south west)-(1pt,-1pt) $) --($ (X.north east)+(0pt,-1pt) $);
\ifCancelX
\draw[#1,overlay,shorten >=-1pt,shorten <=-1pt] ($ (X.north west)-(0pt,0pt) $) --($ (X.south east)+(0pt,0pt) $);
\fi}
\else
\tikz[baseline=(X.base),inner sep=0pt] {\node (X) {#2};
\tikzset{#1}
\draw[#1,overlay,shorten >=-1pt,shorten <=-1pt] ($ (X.south west)-(1pt,-1pt) $) --($ (X.north east)+(0pt,-1pt) $);
\ifCancelX
\draw[#1,overlay,shorten >=-1pt,shorten <=-1pt] ($ (X.north west)-(1pt,-1pt) $) --($ (X.south east)+(0pt,-1pt) $);
\fi}%
\fi}
\begin{document}
$$x =\Cancel{\iota} - \Cancel[red]{I} - \Cancel[blue]{\iota}/ 2\pi$$
\end{document}
如果您在此代码上多下功夫,您可以根据需要自定义取消的对角线以及取消的 X。我更改了取消线,但没有注意保留 X 取消的对称形式,因此如果您需要它,您必须对其进行更多更改。