如何仅使用代码来创建这样的新符号?

如何仅使用代码来创建这样的新符号?

我需要一些新符号,但我不知道如何创建它们。我试图找出这些符号是否已经在 LaTeX 包中,但没有。所以我最后在这里问。

每个答案对我来说都会非常有帮助,因为我是使用 TeX 的新手。

我想要的命令将在数学模式下使用。我想要三个命令,但其中两个只是另一个命令的变体,称为\lrod{ }。该名称来自左手抓住的探测工具“L 杆”。

  1. \lrod{ }。左侧尖端垂直向下弯曲的杆。参见下图。
  2. \rrod{ }。右侧版本\lrod{ }
  3. \stapler{ }. 的双面版本\lrod{ }

\lrod{ }以字母或字母串作为参数。然后它给出被其上方适当水平长度的“左手 L 杆”覆盖的字母(字符串)。也就是说,如果我输入

$\lrod{a}$, $\lrod{abc}$ and $\lrod{a \vphantom b}

那么我应该得到以下内容: /lrod 的例子

如你所见,每个字母的顶部高度应该不同。但如果我使用\vphantom,那么我应该能够修复它。

此外,我希望我可以自己修剪你的每个部分的长度\lrod:较长的垂直段和较短的水平段。所以请不要使用 pdf 图像给我答案,而只使用代码。

\rrod{ }和命令\stapler{ }可以用类似的方式描述。以下是示例图像。

符号示例

如您所见,对于同一个字母,三个符号的顶部高度和宽度应该相等。

最后,符号的宽度必须比下面的字母略窄,这样当我输入以下内容时,它们之间就会留有间隙。

$\lrod{b}\rrod{b}\stapler{b}$

多谢。

答案1

您的基本上是定义的\stapler宏。该包还允许调整规则的宽度。默认宽度有点大,所以我把它调小了。我定义和类似于 的定义\overbracketmathtoolslrod\rrod\overbracket

\documentclass{article}

\usepackage{mathtools}

\newcommand*{\stapler}[1]{{\overbracket[.4pt][.4\fontdimen5\textfont2]{#1}}}

\makeatletter
\newcommand*{\lrod}[1]{%
   \vbox{\m@th\ialign{##\crcr
          \downbracketend{.4pt}{.4\fontdimen5\textfont2}%
          \leaders \vrule \@height .4pt \@depth \z@ \hfil
        \crcr
          \noalign{\kern .2\fontdimen5\textfont2 \nointerlineskip}%
          $\displaystyle{#1}$%
        \crcr}}%
}

\newcommand*{\rrod}[1]{%
   \vbox{\m@th\ialign{##\crcr
          \leaders \vrule \@height .4pt \@depth \z@ \hfil
          \downbracketend{.4pt}{.4\fontdimen5\textfont2}%
        \crcr
          \noalign{\kern .2\fontdimen5\textfont2 \nointerlineskip}%
          $\displaystyle{#1}$%
        \crcr}}%
}

\makeatother

\begin{document}

$\lrod{a}$
$\lrod{\vphantom{b}a}$
$\lrod{b}$
$\lrod{ab}$
$\lrod{abc}$

\medskip
$\rrod{a}$
$\rrod{\vphantom{b}a}$
$\rrod{b}$
$\rrod{ab}$
$\rrod{abc}$

\medskip
$\stapler{a}$
$\stapler{\vphantom{b}a}$
$\stapler{b}$
$\stapler{ab}$
$\stapler{abc}$

\end{document}

在此处输入图片描述

\fontdimen5\textfont2我从代码中采用了前面的参数mathtools。您可以根据需要进行调整。

答案2

\rule下面通过使用 LaTeX 测量参数的大小后绘制规则来提供您的符号\sbox(内部\mathpalette允许下标和上标)。

\documentclass[]{article}

\makeatletter
\newcommand*\stapler@ht{.2ex} % height of the ticks on both ends
\newcommand*\stapler@wd{.1ex} % thickness of the rules
\newcommand*\stapler@dv{.2ex} % padding vertically between argument and symbol
\newcommand*\stapler@di{.2ex} % padding applied on either end of the argument
\newcommand*\stapler@do{.2ex} % padding applied on either end around the symbol
\newsavebox\stapler@box
\newif\ifstapler@left
\newif\ifstapler@right
\newcommand*\@stapler[2]
  {%
    \kern\stapler@do\relax
    \sbox\stapler@box{$#1\kern\stapler@di\relax#2\kern\stapler@di\relax$}%
    \ifstapler@left
      \rule
        [\dimexpr\ht\stapler@box+\stapler@dv]
        {\stapler@wd}
        {\dimexpr\stapler@ht+\stapler@wd/2}%
      \kern-\stapler@wd
    \fi
    \rlap
      {%
        \rule
          [\dimexpr\ht\stapler@box+\stapler@dv+\stapler@ht-\stapler@wd/2]
          {\wd\stapler@box}
          {\stapler@wd}%
      }%
    \usebox\stapler@box
    \ifstapler@right
      \kern-\stapler@wd
      \rule
        [\dimexpr\ht\stapler@box+\stapler@dv]
        {\stapler@wd}
        {\dimexpr\stapler@ht+\stapler@wd/2}%
    \fi
    \kern\stapler@do\relax
  }
\newcommand*\stapler{\stapler@lefttrue\stapler@righttrue\mathpalette\@stapler}
\newcommand*\lrod{\stapler@lefttrue\stapler@rightfalse\mathpalette\@stapler}
\newcommand*\rrod{\stapler@leftfalse\stapler@righttrue\mathpalette\@stapler}
\makeatother

\begin{document}
$\lrod{a}\rrod{b}$

$\lrod{abc}\lrod{\vphantom{abc}a}$

$\lrod{b}\stapler{b}\rrod{b}$

$E^{\lrod{b}\stapler{b}\rrod{b}^{\lrod{a}\stapler{a}\rrod{a}}}$
\end{document}

您可以通过改变参数的定义来定制它的外观。

在此处输入图片描述

相关内容