Как создать новые символы, используя только коды?

Как создать новые символы, используя только коды?

Мне нужны новые символы, и я понятия не имею, как их создать. Я пытался выяснить, были ли эти символы уже в пакете LaTeX, но их там не было. Поэтому, наконец, я спрашиваю здесь.

Каждый ответ будет очень полезен для меня, так как я новичок в использовании TeX.

Команды, которые я хочу, будут использоваться в математическом режиме. Мне нужны три команды, но две из них — это просто варианты другой, называемой \lrod{ }. Название происходит от инструмента для лозоходства «L-стержень», который держат левой рукой.

  1. \lrod{ }. Стержень, левый конец которого загнут вниз перпендикулярно. Смотрите изображение ниже.
  2. \rrod{ }. Правосторонняя версия \lrod{ }.
  3. \stapler{ }. Двусторонняя версия \lrod{ }.

\lrod{ }принимает в качестве аргумента букву или строку букв. Затем он дает нам (строку) букв, покрытых «левым L-стержнем» соответствующей горизонтальной длины над ним. То есть, если я ввожу

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

то я должен получить следующее: /Пример лрода

Как вы видите, верхняя высота должна быть разной для каждой буквы. Но если я использую \vphantom, то я должен быть в состоянии это исправить.

Кроме того, я хотел бы иметь возможность самостоятельно обрезать длину каждого сегмента вашего \lrod: длинный вертикальный сегмент и короткий горизонтальный. Поэтому, пожалуйста, не давайте мне ответ, используя изображение PDF, а только коды.

Команды \rrod{ }и \stapler{ }можно описать аналогичным образом. Вот пример изображения.

символы-пример

Как видите, верхняя высота и ширина трех символов должны быть одинаковы для одной и той же буквы.

Наконец, ширина символов должна быть немного уже, чем у буквы под ними, чтобы между ними оставались пробелы, когда я печатаю, скажем, следующее.

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

Большое спасибо.

решение1

Ваш \stapler— это в основном макрос, \overbracketопределенный mathtools. Пакет также позволяет настраивать ширину правил. Ширина по умолчанию довольно большая, поэтому я делаю ее меньше. Я определяю lrodи \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

Ниже представлен ваш символ, нарисованный с использованием правил LaTeX \ruleпосле измерения размера аргумента с помощью \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}

Вы можете настроить его внешний вид, изменив определения параметров.

введите описание изображения здесь

Связанный контент