\documentclass{ctexart}
\usepackage{amsmath,amssymb}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{steinmetz}
\usepackage{graphicx}
\usepackage[colorlinks]{hyperref}

\newcommand\longangle[1]{%
\tikz[baseline,line cap=round,line join=round]{
\node[inner sep=0pt,anchor=base] (X) {$#1$};
\path (X.south west)+(-0.7em,-1pt) coordinate (dd);
\draw (X.north west)+(-1pt,0)--(dd)--(dd-|X.south east);}}

\begin{document}

\title{记录一次白干}
\author{色k}
\maketitle

问题来自%
\href{http://bbs.ctex.org/forum.php?mod=viewthread&tid=153272}
{这里}，要求输入 $\longangle{100}$ 这样的角符号。

刚开始我用 tikz 画了下：

\begin{verbatim}
\usepackage{tikz}
\newcommand\longangle[1]{%
\tikz[baseline,line cap=round,line join=round]{
\node[inner sep=0pt,anchor=base] (X) {$#1$};
\path (X.south west)+(-0.7em,-1pt) coordinate (dd);
\draw (X.north west)+(-1pt,0)--(dd)--(dd-|X.south east);}}
\end{verbatim}

后来发现这设计有个缺点，
由于在 \verb"\node" 里面是 \verb"$#1$"，
故此角里的公式总是 \verb"\textstyle"，
除非手动添加相应的命令来切换 style，
举个栗子，代码
\verb"\[\sum\longangle{\sum}+\longangle{\displaystyle\sum}\]"
得
\[\sum\longangle{\sum}+\longangle{\displaystyle\sum}\]

为解决这个问题，我套上了 \verb"\mathchoice"，
这命令就是根据当前的 style 来执行相应的命令，
具体做法是，先把上面的 \verb"\longangle" 改个名字，
比如 \verb"\angletmp"，然后再
\begin{verbatim}
\newcommand\longangle[1]{\mathchoice
{\angletmp{\displaystyle#1}}{\angletmp{\textstyle#1}}
{\angletmp{\scriptstyle#1}}{\angletmp{\scriptscriptstyle#1}}}
\end{verbatim}
效果就是原帖4楼所贴的那样。

然而，如6楼所言，原来早就有输入这符号的宏包了，
名为 \verb"steinmetz"，提供了一个命令 \verb"\phase"，
例：\verb"$\phase{100}$" 得 $\phase{100}$。
那么，看来我上面那是白干了。



这就完结了？不行，不能就这么算了，我得挖一下 \verb"\phase" 的缺点，
果然，在仔细观察后，发现了它的一些细节问题。

（1）如果你放大来看刚才那示例，就会发现角顶点的连接处并不圆滑。
不知怎么放大？好吧，我代劳咯，
以下是 \verb"$\phase{\alpha}$" 放大20倍的效果：

\scalebox{20}{$\phase{\alpha}$}

\vspace{1.5cm}

（2）基线有细微下沉，
这在正常字号下很难发现，
$1\phase{1}1$ 几乎看不出，
但 \verb"\Huge$1\phase{1}1$"
就会很明显：{\Huge$1\phase{1}1$}。

（3）懒得描述，看以下代码及效果你应该懂的。

\verb"\fboxsep=0pt\fbox{$\phase{100}$}"

效果：\fboxsep=0pt\fbox{$\phase{100}$}

所以在上面写（2）之前我要手动加个垂直距离，不然会产生重叠。

（4）或者你也已经发现了，
在讲（2）时 \verb"\Huge" 下的角的粗细和普通字号时是一样的，
也就是说线条粗细是固定的，正常的符号应随字号变大而变粗才对。



综上，我那 \verb"\longangle" 总算还有点意义，
但也仍需要改进，比如我的画法也存在第（4）点的问题，不过这个易改，
还有一点要学下 \verb"\phase"，
那就是它那角的斜率是恒定的，而我的则会随高度的增大而增大，
对比一下：

\verb"$\phase{\alpha}+\phase{\dfrac12}$"

效果：$\phase{\alpha}+\phase{\dfrac12}$

\verb"$\longangle{\alpha}+\longangle{\dfrac12}$"

效果：$\longangle{\alpha}+\longangle{\dfrac12}$

还是搞成恒定的吧，也不难改。

下面就是再次改进 \verb"\longangle" 的完整代码了，
为了方便运算，这次我还调用了 tikz 的 calc 库。

\begin{verbatim}
\usepackage{tikz}
\usetikzlibrary{calc}
\newcommand\longangle[1]{\mathchoice
{\angletmp{\displaystyle#1}}{\angletmp{\textstyle#1}}
{\angletmp{\scriptstyle#1}}{\angletmp{\scriptscriptstyle#1}}}
\newlength\anglesep
\newcommand\angletmp[1]{%
\anglesep=0.25ex
\tikz[baseline,line cap=round,line join=round]{
\node[inner sep=0pt,anchor=base] (X) {$#1$};
\path let \p1=($(X.north)-(X.south)$) in
(X.south west)+({-0.75*(\y1+\anglesep)-\anglesep},-\anglesep)
coordinate (dd);
\draw[line width=0.1ex]
(X.north west)+(-\anglesep,0)--(dd)--(dd-|X.south east);
}}
\end{verbatim}

其中，\verb"\anglesep=0.25ex" 是横线与式子的距离，
那个 0.75 是斜率的倒数，你可以改变这两个值看看不同的效果。

下面来测试一下。

\renewcommand\longangle[1]{\mathchoice
{\angletmp{\displaystyle#1}}{\angletmp{\textstyle#1}}
{\angletmp{\scriptstyle#1}}{\angletmp{\scriptscriptstyle#1}}}
\newlength\anglesep
\newcommand\angletmp[1]{%
\anglesep=0.25ex
\tikz[baseline,line cap=round,line join=round]{
\node[inner sep=0pt,anchor=base] (X) {$#1$};
\path let \p1=($(X.north)-(X.south)$) in
(X.south west)+({-0.75*(\y1+\anglesep)-\anglesep},-\anglesep)
coordinate (dd);
\draw[line width=0.1ex]
(X.north west)+(-\anglesep,0)--(dd)--(dd-|X.south east);
}}

常规字号，行内：$\angle 100\ne\longangle{100}$,
$\longangle\alpha+\longangle{ABC}+\longangle{1/2}
+\longangle\sum+\longangle{\frac12}$

行间：
\[\longangle\alpha+\longangle{ABC}+\longangle{1/2}
+\longangle\sum+\longangle{\frac12}\]

分式、上下标：
\[
\frac{\longangle\sum}{\longangle\sum}
+\longangle{ABC}_{\longangle{ABC}}^{\longangle{ABC}}
+\sum_{\longangle\sum}^{\longangle\sum}
\]

在 \verb"\Huge" 字号下：
{\Huge$1\longangle{1}1$}

框一下：\fbox{$\longangle{100}$}

\verb"\Huge" 下再框：{\Huge\fbox{$\longangle{100}$}}

\end{document}
