命令是如何\underline
定义的?如何才能使自定义下划线仅用作水平线,但又遵循指定的高度或文本、数学输入等的高度以及特定的宽度?
这是我的第一次尝试:
\newcommand{\ndfracunderline}[1]{\ensuremath{\underline{\phantom{\dfrac{2}{3\hspace*{#1}}}}}}
这个方法很好用,但是下面的方法不行:
\newsavebox\underlinebox
\newcommand\cunderline[3][black]{%
\newlength{\cunderlineheight}%
\settoheight{\cunderlineheight}{#3}%
{\sbox\underlinebox{\cunderlineheight\hspace*{#2}}%
\rlap{\usebox\underlinebox}\color{#1}\rule[-1.2\dp\underlinebox]{\wd\underlinebox}{0.5pt}}}
答案1
我不知道这是否可能成为你所追求的:
\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{xcolor}% http://ctan.org/pkg/xcolor
\makeatletter
\newcommand{\newunderline}[3][black]{% \newunderline[<colour>]{<width>}{<stuff>}
{\def\@tempa{!}%
\def\@tempb{#2}%
\ifx\@tempa\@tempb\relax
\def\@tempa{\phantom}\let\maybe@hspace\@gobble%
\else%
\def\@tempa{\vphantom}\let\maybe@hspace\hspace%
\fi%
\color{#1}\underline{\@tempa{#3}\maybe@hspace{#2}}}}
\makeatother
\begin{document}
$x$: \newunderline{1ex}{$x$} \par
$\frac{x}{y}$: \newunderline[red]{2em}{$\frac{x}{y}$} \par
$\dfrac{\mathrm{d}y}{\mathrm{d}x}$: \newunderline[blue!80!white]{!}{$\dfrac{\mathrm{d}y}{\mathrm{d}x}$}
\end{document}
\newunderline[<colour>]{<width>}{<stuff>}
需要 3 个参数。如果宽度<stuff>
为!
。根据您的要求,它尊重深度参数、模式(文本或数学)可以具有指定的宽度(或自然的)。