从基线开始的平方根符号

从基线开始的平方根符号

当输入平方根符号时,当其下部超出基线时,有时看起来会有点不好看:

\documentclass{standalone}

\begin{document}
    The expression \( \sqrt{x} \) is well defined.
\end{document}

在此处输入图片描述

我猜想原因是为了与具有降数的开方数(如 y)保持一致(以获得相同的平方根符号高度)。对于某些只有一个开方数而没有升数或降数的内联情况(如 a、n、x、...),我希望有一个命令\smallsqrt,其最低部分从基线开始,其最高部分(横线)不变,即与正常\sqrt符号的横线高度相同。

补充及可能的解决方案:

需要说明的是:我并不想\sqrt在所有情况下都替换原始值。只有在内联模式下,我才希望获得更紧凑的平方根符号。

这里有一个小例子,是我梦想的,用 TikZ 实现的:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{calc}

% changed from: https://tex.stackexchange.com/a/680575/263991
\NewDocumentCommand{\smallsqrt}{s O{\,} m}{%
    \begin{tikzpicture}[baseline=(A.base)]
        \node[inner ysep=2pt, inner xsep=0pt] (A) at (0,0) {\ensuremath{#3}\kern1pt};
        \coordinate (tail) at ([yshift=-.5mm]A.north east);
        \coordinate (NO) at (A.north east);
        \coordinate (NW) at (A.north west);
        \coordinate (bottom) at ([shift={(-.12,.07)}]A.south west);
        \coordinate (center) at ([xshift=-1.8mm,yshift=.3mm]A.west);
        \coordinate (start) at ($(center)+(-.3mm,-.3mm)$);
        \coordinate (centerF) at ($(center)+(.1mm,.1mm)$);
        \coordinate (bottomF) at ($(bottom)+(.1mm,.1mm)$);
        \coordinate (centerM) at ($(center)+(.05mm,.05mm)$);
        \coordinate (bottomM) at ($(bottom)+(.05mm,.05mm)$);
        \IfBooleanTF{#1}{
            \draw[rounded corners=.1pt] (tail)-- (NO) -- (NW)   -- (bottom) --(center) node[inner sep=1pt, above left,xshift=1mm]{$\scriptscriptstyle #2$};
        }{
            \draw[rounded corners=.1pt] (NO) -- (NW)    -- (bottom) --(center) node[inner sep=1pt, above left,xshift=1mm]{$\scriptscriptstyle #2$};
        }
        \draw[line width=0.25pt,rounded corners=.05pt,shorten >=.25pt,line cap=round] (start) -- (centerF) -- (bottomF);
        \draw[shorten >=.25pt,shorten <=.25pt,line cap=round] (centerM) -- (bottomM);
    \end{tikzpicture}%
}

\begin{document}
    The expression \( \sqrt{x}+\smallsqrt{a}+\smallsqrt*{a}+\smallsqrt{b}+\smallsqrt{y}+\smallsqrt{\vphantom{b}y}+\smallsqrt[3]{n}\) is well defined.
\end{document}

在此处输入图片描述

我并不真正满意,但我认为对于某些目的来说这是一个很好的解决方案。

(* 版添加了德国学校的尾巴。)

答案1

我尝试过这个但是不太美观:

\documentclass{standalone}

\usepackage{tikz}

% changed from: https://tex.stackexchange.com/a/680575/263991
\NewDocumentCommand{\smallsqrt}{s O{\,} m}{%
    \begin{tikzpicture}[baseline=(A.base)]
        \node[inner ysep=2pt, inner xsep=1pt] (A) at (0,0) {\ensuremath{#3}};
        \draw([yshift=-.5mm]A.north east)--(A.north east)--(A.north west)
        --([shift={(-.12,.05)}]A.south west)
        --([xshift=-2mm]A.west)
        --++({-.034*width("$\scriptscriptstyle #2$")},0)node[inner ysep=1pt, above, midway]{$\scriptscriptstyle #2$};
        \begin{scope}
            \clip(A.north west)--([shift={(-.12,.05)}]A.south west)--([shift={(-2mm,.2pt)}]A.west)--++(.1,0);
            \draw[very thick, line cap=round]([shift={(-.12,.05)}]A.south west)
            --([xshift={-2mm}]A.west);
        \end{scope}
    \end{tikzpicture}%
}

\begin{document}
    The expression \( \sqrt{x}\smallsqrt{x}\) is well defined.
\end{document}

在此处输入图片描述

额外的小垂直尾翼是德国学校数学的一个惯例。

答案2

您遇到的问题是 TeX 对平方根符号的最小总高度有限制:

在此处输入图片描述

从左到右,观察平方根符号的最低部分和最高部分如何都向上移动,而总高度保持不变,即\sqrt高度增加的参数。

为了实现您的格式化目标,插入由 创建的印刷支柱会很有帮助\vphantom{k}

在此处输入图片描述

调整后的平方根符号的最低点并不完全在基线上,而是略低于基线。我相信这种差异是可以接受的。

\smallsqrt注意:如果其参数包含一个或多个带有降部组件的字母(例如gjpq或),请不要使用y,除非您还将问题中的字母包裹在\smash[b]{..}包装器中。

进一步观察,在上面的截图中,\sqrt{T}和的输出\smallsqrt{T}是相同的。这是因为如果使用默认的 Computer Modern 数学字体,小写字母k和大写字母的高度是相同的。如果您的文档使用非默认数学字体,和T的输出不必相同。\sqrt{T}\smallsqrt{T}

\documentclass{article} % or some other suitable document class
\newcommand{\smallsqrt}[1]{\sqrt{#1\vphantom{k}}}

\begin{document}
$\sqrt{.} \quad \sqrt{x} \quad \sqrt{t} \quad \sqrt{k}$

$\sqrt{x} \quad \smallsqrt{x} \quad \smallsqrt{T} \quad \sqrt{T}$
\end{document}

相关内容