如何定义一个带有中线的新三角形符号以用作数学运算符?

如何定义一个带有中线的新三角形符号以用作数学运算符?

我想使用一个特定的符号,一个带有中线的三角形,作为数学运算符。该符号大致应如下所示:

带中线的三角形

[这是tikz通过挪用回答经过海科·奥伯迪克针对这个问题哈利波特的符号]。

我的预期用途与哈利波特无关,相反,我想将其用作一个与下标配合良好的一元数学运算符。

预期语法

理想情况下,我会定义一个命令\triangleline,给出符号以及一些代码,以确保它在常见的数学环境中表现良好。在此之后,我会定义\trilineop

\newcommand{\trilineop}[1]{\operatorname{\triangleline_\mathrm{e}}{\left(#1\right)}}

用于我的文档。

但我不确定该怎么做,这是否是一个好计划,或者什么是更好的计划。也许有一种巧妙的方法可以用\triangle某种方式构建这个符号?

\Delta(由于许多字体中三角形边是不对称的,因此不宜使用)。


这是一个可以作为起点的示例环境。

\documentclass{beamer}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{tikz}

%Code here to define \triangleline
%%
%%

\newcommand{\trilineop}[1]{\operatorname{\triangleline_\mathrm{e}}{\left(#1\right)}}

\begin{document}
    
    \begin{frame}{}
      $$\trilineop{\boldsymbol{A}}$$
    \end{frame}
  
\end{document}

这是tikz前面提到的用于生成示例图像的代码。(我将其用作黑匣子)。

\begin{tikzpicture}[baseline=0]
    \def\a{1cm}
    \pgfmathsetlengthmacro\radius{\a/2 * tan(30)}
    \draw[thick]
    (0, 0) -- (60:\a) -- (\a, 0) -- cycle
    (\a/2, 0) -- (60:\a)
    ;
\end{tikzpicture}

答案1

我不太喜欢使用 TiZ 无处不在,所以我在此建议基于旧的更简约版本。我无论如何都不是/\bigtriangleup的忠实粉丝,所以我建议基于from进行定义。可以使用带星号的版本获得自动缩放,而手动大小可以作为可选参数传递。\left\right\DeclarePairedDelimiterXPPmathtools

\documentclass{article}

\makeatletter
\newcommand*{\triangleline}{\mathpalette\@triangleline\relax}
\newcommand*{\@triangleline}[2]{{%
    \sbox0{\m@th$#1\bigtriangleup$}%
    \dimen@\fontdimen8
       \ifx#1\displaystyle\textfont\else
       \ifx#1\textstyle\textfont\else
       \ifx#1\scriptstyle\scriptfont\else
       \scriptscriptfont\fi\fi\fi 3
   \ooalign{\hfil\hbox{\vrule\@width\dimen@\@height\ht0\@depth-.5\dimen@}\hfil\cr\box0}%
}}
\makeatother

\usepackage{mathtools}% for the following
\DeclarePairedDelimiterXPP{\trilineop}[1]{\mathop{\triangleline_{\mathrm{e}}}}{(}{)}{}{#1}

\begin{document}

\parskip=\bigskipamount

$\triangleline_{\triangleline_{\triangleline}}$

$2\trilineop{x}$

$2\trilineop[\big]{\frac{x}{2}}$

$2\trilineop*{\dfrac{x}{2}}$

\end{document}

在此处输入图片描述

答案2

像这样吗?

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}
\usepackage{tikz}

%Code here to define \triangleline
\makeatletter
\DeclareRobustCommand{\triangleline}{\mathpalette\triangleline@\relax}
\newcommand{\triangleline@}[2]{%
  \mspace{1mu}%
  \begin{tikzpicture}[baseline=0]
    \sbox\z@{$\m@th#1\Delta$}\edef\a{\the\wd\z@}
    \edef\b{\the\dimexpr\triangleline@thickness{#1}}
    \pgfmathsetlengthmacro\radius{\a/2 * tan(30)}
    \draw[line width=\b] (0, 0) -- (60:\a) -- (\a, 0) -- cycle (\a/2, 0) -- (60:\a);
  \end{tikzpicture}%
  \mspace{1mu}%
}
\newcommand{\triangleline@thickness}[1]{%
  \ifx#1\displaystyle 1.2\fontdimen8\textfont3\else
  \ifx#1\textstyle 1.2\fontdimen8\textfont3\else
  \ifx#1\scriptstyle 1.4\fontdimen8\scriptfont3\else
  1.6\fontdimen8\scriptscriptfont3\fi\fi\fi
}

\makeatother

\newcommand{\trilineop}{\operatorname{\triangleline_{e}}}

\begin{document}

\[
\trilineop(\boldsymbol{A})\Delta_{\mathrm{e}}(A)
\quad
\scriptstyle\trilineop(\boldsymbol{A})
\quad
\scriptscriptstyle\trilineop(\boldsymbol{A})
\]
  
\end{document}

尝试调整线条粗细的因素,直到您满意为止。

不要定义\trilineop接受参数:提供括号使得代码更干净;当它们不是必要时,请避免使用,就像这里一样\left\right

相关内容