我想对某个数学符号制作它的"否定"形式,剽窃鱼老师的代码(对鱼老师的贡献表示倾佩和感谢,希望鱼老师不要过于在意),想对\Longleftrightarrow
这个符号中心处添加一条斜线,表示否定,mwe:
\documentclass{article}
\usepackage{tikz,amsmath}
\usetikzlibrary{calc}
\begin{document}
\makeatletter
\def\pgfgetnodeheight(#1)#2{
\path ($(#1.south) - (#1.north)$);
\pgfmathsetmacro#2{veclen(\pgf@x, \pgf@y)}
\edef#2{#2pt}
}
\def\pgfgetnodewidth(#1)#2{
\path ($(#1.east) - (#1.west)$);
\pgfmathsetmacro#2{veclen(\pgf@x, \pgf@y)}
\edef#2{#2pt}
}
\makeatother
\[\sum_{k}^{n}f(k)
\begin{tikzpicture}
\node[inner sep=0pt,] (a) {$\Longleftrightarrow$};
\pgfgetnodewidth(a)\nWidth
\pgfgetnodeheight(a)\nHeight
\draw[line width=.5pt](-.6*\nHeight,-.25*\nWidth)--(.6*\nHeight,.25*\nWidth);
\end{tikzpicture}
ABC
\]
\end{document}
效果如下:
但符号没有合适的摆放在一行的数学公式 \sum_{k}^{n}f(k)
与 ABC
之间的正确位置(垂直和水平位置).
我的问题:
\mathchoice
命令,不知能否行得通)使用 amssymb
包,通过在 <arrow>
前面添加 n
可以得到否定箭头,但箭头可能太少,于是还是给个小建议供参考。
鱼大神代码学不来,学来我也写不懂,捣鼓一个新的,尽可能满足你的需求:
同样的思路,在符号的中心处添加一条斜线,通过添加线并旋转制成的 \homo[...]{<array>}
指令,其中可选参数用于水平移动斜线的位置,使其在箭头过短时不会碰到箭头两端。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb} % 更多箭头啊啊啊啊啊啊啊啊
\usepackage{graphicx} % 24岁是\rotatebox!!!
\makeatletter % 要 @ 啊啊啊啊啊啊啊
\newcommand*\homo[2][0mu]{\HomoInternal{#1}{\homoslash}{#2}}
\newcommand*\HomoInternal[3]{\mathpalette\Homo@{{#1}{#2}{#3}}}
\newcommand*\Homo@[2]{\Homo@@{#1}#2}
\newcommand*\Homo@@[4]{%
\mathrel{\ooalign{%
$\m@th#1#4$\cr
\hidewidth$\m@th#3{#1}\mkern\muexpr#2*2$\hidewidth\cr
}}%
}
\newcommand*\homoslash[1]{\rotatebox[origin=c]{60}{$\m@th#1-$}}
\makeatother % 不要 @ 啊啊啊啊啊啊啊啊
\begin{document}
\[
\begin{array}{cc}
\hline
\texttt{\tiny\textbackslash homo[...]\{arrow\}} & \texttt{\tiny\textbackslash n<arrow>}\\ \hline
\homo[1mu]{\rightarrow} & \nrightarrow\\
\homo[-1mu]{\leftarrow} & \nleftarrow\\
\homo[2mu]{\Rightarrow} & \nRightarrow\\
\homo{\leftrightarrow} & \nleftrightarrow\\
\homo{\Leftrightarrow} & \nLeftrightarrow\\
\homo[1mu]{\mapsto} & \\
\homo[1mu]{\hookrightarrow} & \\
\homo[1mu]{\leadsto} & \\
\homo[1mu]{\rightsquigarrow} & \\
\homo[1mu]{\rightharpoonup} & \\
\homo[1mu]{\rightarrowtail} & \\
\homo[1mu]{\rightrightarrows} & \\
\homo[1mu]{\longrightarrow} & \\
\homo[1mu]{\xrightarrow{abcdefg}} &
\\ \hline
\end{array}
\]
\[
y^{x \homo[1mu]{\Leftrightarrow} y^{x \homo[1mu]{\Leftrightarrow} y}} \homo[1mu]{\Leftrightarrow} y_{x \homo[1mu]{\Leftrightarrow} y_{x \homo[1mu]{\Leftrightarrow} y}}
\]
\end{document}
使用\homo[...]{<array>}
谢谢大佬