Scalrel 包:正确拉伸“\benz”符号

Scalrel 包:正确拉伸“\benz”符号

从这个问题开始按照 Brigham 的“快速傅里叶变换”中的傅里叶对符号我用这段代码来回答,

\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usepackage{scalerel}
\newcommand{\benz}{\mathbin{\hstretch{3}{\scalebox{.4}{\begin{tikzpicture}
% create the node
\node[draw=black,minimum size=.7cm,regular polygon,regular polygon sides=6] (a) {};
\node[draw=black,minimum size=.55cm,regular polygon,regular polygon sides=6] (a) {};
\end{tikzpicture}}}}}
\begin{document}

$a\benz b$
\end{document}

在此处输入图片描述

\benz是否有可能(只是出于我的好奇)使用包正确地拉伸符号scalerel

答案1

对于这项任务来说,使用scalereltikZ 似乎有点过度,但 tikZ 可以满足您的所有需求。此外,我认为它scalerel作用于 PDF 级别(或至少 DVI 级别),并将整个内容拉伸为图片,从而打破符号上的线宽均匀性。

我想提出一个更简单的版本:

  • 仅使用 tikZ
  • 使用ex单位定义的长度允许您的符号在文本大小发生变化时适当拉伸(但它在下标/上标中不起作用)
  • 单个双六边形
  • xscaletikZ 自身使用选项进行拉伸

在此处输入图片描述

代码:

\documentclass[margin=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\newcommand{\benz}{\mathbin{\tikz{
\node[draw=black,
    double=white, 
    minimum size=.87ex, 
    regular polygon, 
    regular polygon sides=6, 
    xscale=3, 
    inner sep=0pt, 
    line width=.08ex] {};}}}

\begin{document}
$a\benz b$
\Large 
$a\benz b$ 
\end{document}

编辑

我刚刚阅读了您提到的问题并认为signal来自的形状shapes.symbols更适合您想要实现的目标):

在此处输入图片描述

代码:

\documentclass[margin=1cm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.symbols}
\newcommand{\benz}{\mathbin{\tikz{
\node[draw=black,
    double=white, 
    minimum size=.87ex, 
    signal,
    signal to=east and west,
    signal pointer angle=120,
    minimum width=2ex, 
    inner sep=0pt, 
    line width=.08ex] {};}}}

\begin{document}
$a\benz b$
\Large 
$a\benz b$ 
\end{document}

相关内容