代数数的房子如何排版?

代数数的房子如何排版?

我想复制以下文本

涉及代数整数的不等式

但我通过 Detexify 或通过全面的 LaTeX 符号列表。我还尝试过将竖线和上划线结合起来,比如

\left\lvert\overline{ \alpha }\rvert\right
\overline{\left\lvert \alpha \rvert\right}

导致不理想的结果。

答案1

有一些问题需要考虑:

行宽

  • TeX 中的标准线宽是0.4pt,它在 TeX 中被硬编码为26214sp

  • \overline使用不同的线宽。它取自 TeX 中数学字体系列 3 的字体参数 8。

    标准数学字体(Computer Modern)适用0.39998pt于所有字体大小。但它可以扩展到其他字体,例如mathptmx带有10pt类选项的包:

    • 0.3999pt\textfont\textstyle/ \displaystyle
    • 0.29591pt\scriptfont\scriptstyle
    • 0.23993pt\scriptscriptfont\scriptscriptstyle

\overline

  • TeX\overline{...}以下列方式构造一个θ带有线宽的(伪代码):

    \vbox{
      \kern θ
      \hrule height θ
      \kern 3*θ
      \hbox{$...$}
    }
    

    尤其是在标线上方留有空白。这很有用,例如,如果上划线的符号放在分数的分母中。

  • TeX 对 的数学表达式使用了狭窄的数学样式\overline。这意味着,上标会稍微向下移动,以获得更好的视觉效果。

因此,这\overline看起来是“房屋”符号的不错选择。但是,垂直线应使用与 相同的线宽\overline

间距

  • \overlineTeX在公式和 中的线之间插入 3 * θ(θ = 的线宽) \overline。如果不失去 cramped 样式,则无法轻松更改此设置。(据我所知,只有 LuaTeX 可以明确设置 cramped 样式。)

  • 在 的行上方添加了额外的空格\overline,请参见上文。

  • 通常符号都有侧边距,即符号左右两侧的空格。TeX 中通常无法提供确切的数值。该示例使用 2 * θ 作为垂直线和公式之间的水平空间。此外,在垂直线外还放置了 1.5 * θ 的水平空间。新符号的某种侧边距可避免与内置的数学表达式相接触。

  • 由于 OP 想要更长的台词(见评论),该示例添加了 2 * θ 作为额外的深度。 (3 * θ 似乎太大,因为没有下划线需要与公式保持一定距离。)

完整的示例还考虑了不同的数学风格,因此宏\house尊重当前的数学大小。

\documentclass{article}
\usepackage{mathptmx}

\makeatletter
\newcommand*{\house}[1]{%
  \mathord{%
    \mathpalette\@house{#1}%
  }%
}
\newcommand*{\@house}[2]{%
  % #1: math style
  % #2: expression that gets the "house"
  % get the line width of `\overline' in the current math font size
  \dimen@=\fontdimen8 %
      \ifx#1\scriptscriptstyle\scriptscriptfont
      \else\ifx#1\scriptstyle\scriptfont
      \else\textfont\fi\fi
      3 %
  \sbox0{%
    $#1%
      \vrule width\dimen@\relax
      \overline{%
        \kern2\dimen@
        \begingroup % to keep changes of \dimen@ in #2 local
          #2%
        \endgroup
        \kern2\dimen@
      }%
      \vrule width\dimen@\relax
      \mathsurround=1.5\dimen@ % outside margin
    $%
  }%
  % TeX adds an empty space above `\overline', it needs to be
  % removed to get the correct height for the `\vrule's
  \ht0=\dimexpr\ht0-\dimen@\relax
  \dp0=\dimexpr\dp0+2\dimen@\relax
  \vbox{%
    \kern\dimen@ % reinsert previously removed space
    \copy0 %
  }%
}

\begin{document}
\[
  \textstyle % same size as \displaystyle
  \house{\alpha + \beta}
  \stackrel{\mbox{\tiny T}}{=}
  \house{\alpha} + \house{\beta}^n
\]
\[
  \scriptstyle
  \house{\alpha + \beta}
  \stackrel{\mbox{\tiny S}}{=}
  \house{\alpha} + \house{\beta}^n
\]
\[
  \scriptscriptstyle
  \house{\alpha + \beta}
  \stackrel{\mbox{\tiny SS}}{=}
  \house{\alpha} + \house{\beta}^n
\]
\[
  \def\x{\frac{\house{\alpha + \beta}}{\house{\alpha} + \house{\beta}}}
  \x, \frac{\x}{\x} 
\]
\[
  \underbrace{\overline{\alpha^2}, \house{\alpha^2}}_{\mbox{\tiny cramped}} \ne
  \overline{\mbox{$\alpha^2$}}, \house{\mbox{$\alpha^2$}}
\]
\end{document}

结果

答案2

这是一个简单的 TeX 解决方案。缺点是,这\everymath是在“房子”内执行的。如果您希望每栋房子都有相同的高度和深度,请在其中添加支柱或幻影。

\nopagenumbers% for cropping
\def\house#1{{%
    \setbox0=\hbox{$#1$}
    \vrule height \dimexpr\ht0+1.4pt width .4pt depth \dp0\relax
    \vrule height \dimexpr\ht0+1.4pt width \dimexpr\wd0+2pt depth \dimexpr-\ht0-1pt\relax
    \llap{$#1$\kern1pt}
    \vrule height \dimexpr\ht0+1.4pt width .4pt depth \dp0\relax
}}


$\house{\alpha + \beta} \leq \house{\alpha} + \house{\beta}$
\medskip
$\house{\strut\alpha + \beta} \leq \house{\strut\alpha} + \house{\strut\beta}$
\bye

在此处输入图片描述

附加问题:是否有普通的 TeX dimen,其默认线宽为.4pt?我只知道\p@=1pt\z@=0pt

答案3

水平杆稍微突出:

\documentclass[a4paper,12pt]{article}
\usepackage{array}

\newcommand\house[1]{%
  \begingroup\setlength\arraycolsep{0pt}
  \begin{array}[t]{@{\mkern1mu}c@{}|c|@{}c@{\mkern1mu}}
  \firsthline
  &\;#1\;{}&
  \end{array}
  \endgroup
}


\begin{document}

$\house{\alpha + \beta} \leq \house{\alpha} + \house{\beta}$

\end{document}

在此处输入图片描述

可以通过增加给定的量来控制突出量\mkern;这是通过\mkern2mu

在此处输入图片描述

正如芭芭拉·比顿 (Barbara Beeton) 在评论中指出的那样,该栏不应突出;为此,只需删除\mkern指令:

\newcommand\house[1]{%
  \begingroup\setlength\arraycolsep{0pt}
  \begin{array}[t]{@{}c@{}|c|@{}c@{}}
  \firsthline
  &\;#1\;{}&
  \end{array}
  \endgroup
}

在此处输入图片描述

答案4

也没见过。不过,这里有一种方法:把所有东西都放到一个数组中,以便hhline垂直线和水平线有清晰的连接。我定义了一个普通版本和一个粗体版本(我不知道如何声明它),以便两个版本只有一个命令):

\documentclass[a4paper,12pt]{article}

\usepackage{mathtools}
\usepackage{hhline, bm}
 \newcommand\house[1]{\mkern2mu\begin{array}{|@{\:}c@{\:}|}\hhline{|-|}#1\end{array}\mkern1mu}
 \newcommand\boldhouse[1]{\setlength{\arrayrulewidth}{0.6pt}\mathversion{bold}%
 \mkern2mu\begin{array}{|@{\:}c@{\: }|}\hhline{|-|}#1\end{array}\mkern1mu}%

\begin{document}

 $ \house{α + β} \leq \house{α} + \house{β}$\\

 $\mathversion{bold} \boldhouse{α + β} \leq \boldhouse{α} + \boldhouse{β} $

\end{document} 

在我看来,结果比 OP 的图像更好(所有符号的高度相同):

在此处输入图片描述 应该保留一个粗体版本来定义。

相关内容