叠加符号

叠加符号

我想重载一些符号。基本上它们不占用空间,所以

\symbol1\symbol2\symbol3

将存在于页面上与任一符号相同的位置。

理想情况下,我希望它们相对于第一个进行定位/偏移,但我不想为此经历很多麻烦。(不设置 tikz 环境只是为了绘制几个独特的符号)

请注意,我希望符号重叠。

例如,

\/会创建一个类似 x 的符号,等等。

因为符号可能无法按照我希望的方式完美对齐,所以我可能需要稍微调整一下它们的位置。

答案1

已编辑以压缩语法。

这里我提供了\mo[<alignment>]{<symbol list>}。我已将其设置为使用空格作为符号列表分隔符(但请注意,作为符号的宏将需要尾随空格{}才能识别后续空格)。对齐方式可以是lcr(默认c)。

还提供了宏X{<horizontal shift in ex>}和。\Y{<vertical shift in ex>}{}

应广大用户要求,提供了附加宏:\FH[<scale>]{<symbol>}用于水平翻转,\FV[<scale>]{<symbol>}用于垂直翻转与原始字形具有相同的足迹\R{<angle>}{<symbol>}用于绕符号中心旋转符号,以及\SC{<scale>}{<symbol>}缩放符号。输出的第 2 行和第 4 行展示了这些新功能。

\documentclass{article}
\usepackage{stackengine,graphicx}
\newcommand\X[1]{\kern#1ex}
\newcommand\Y[2]{\raisebox{#1ex}{#2}}
\newcommand\FH[2][1]{\scalebox{-#1}[#1]{#2}}
\newcommand\FV[2][1]{\R{180}{\FH[#1]{#2}}}
\newcommand\R[2]{\rotatebox[origin=c]{#1}{#2}}
\newcommand\SC[2]{\scalebox{#1}{#2}}
\newcommand\mo[2][c]{%
  \bgroup%
  \setstackEOL{ }% 
  \setstackgap{L}{0pt}%
  \Longstack[#1]{#2}%
  \egroup%
}
\begin{document}
\newcommand\sd{\makebox[1pt]{.}}
\def\tmp{
\mo{/ \textbackslash}
\mo{O \sffamily I \Y{.23}{$-$}}
\mo[l]{$|$ \X{.21}=}
\mo{$-$ )\X{.1} \X{.1}(}
\mo{. \Y{.1}{\sd\X{.2}\sd} \Y{.4}{\sd\X{.4}\sd} \Y{.9}{\sd\X{.6}\sd} \Y{1.6}{\sd\X{.8}\sd}}

\mo{\FH{b} b}
\mo{\FH[.7]{b} \SC{.7}{b}}
\mo{\R{45}{b} \R{-45}{\FH{b}}}
\mo{Q \FV{Q}}
\mo{\R{90}{j} \FV{j}}}
\tmp\par\LARGE\tmp
\end{document}

在此处输入图片描述

答案2

您可以使用\ooalign;唯一的问题是找到合适的语法:这是一个尝试。

  • *-variant 使用文本模式
  • 可选参数应该是数学类型选择器(默认类型是普通类型)
  • 要覆盖的项目以逗号分隔,并带有可能的[<length>]前缀以表示转变。

请注意,移动可能会将符号推到整体边界框之外。

覆盖以下标/上标的比例显示。

\documentclass{article}
\usepackage{amsmath,xparse}

\ExplSyntaxOn
\cs_new_protected:Nn \dissonance_ooalign:n
 {
  \text{\ooalign{#1\crcr}}
 }
\cs_generate_variant:Nn \dissonance_ooalign:n { V }

\NewDocumentCommand{\overlaysymbols}{sO{}m}
 {
  \IfBooleanTF{#1}
   {
    \cs_set_eq:NN \__dissonance_maybemath:n \use:n
   }
   {
    \cs_set_eq:NN \__dissonance_maybemath:n \ensuremath
   }
  \seq_set_split:Nnn \l_dissonance_ooalign_in_seq { , } { #3 }
  \tl_clear:N \l_dissonance_ooalign_out_tl
  \tl_gclear:N \g__dissonance_ooalign_phantom_tl
  \seq_map_inline:Nn \l_dissonance_ooalign_in_seq
   {
    \tl_put_right:Nn \l_dissonance_ooalign_out_tl
     {
      \__dissonance_ooalign_item ##1 \q_stop
     }
   }
  #2 { \dissonance_ooalign:V \l_dissonance_ooalign_out_tl }
  \vphantom{ \tl_use:N \g__dissonance_ooalign_phantom_tl }
 }

% slight abuse for using optional arguments
\NewDocumentCommand{\__dissonance_ooalign_item}{ou{\q_stop}}
 {
  \tl_gput_right:Nn \g__dissonance_ooalign_phantom_tl
   {
    \__dissonance_maybemath:n { #2 }
   }
  \hfil
  \IfValueT{#1}{\hspace{#1}}
  \__dissonance_maybemath:n { #2 }
  \IfValueT{#1}{\hspace{-#1}}
  \hfil
  \cr
 }

\seq_new:N \l_dissonance_ooalign_in_seq
\tl_new:N \l_dissonance_ooalign_out_tl

\ExplSyntaxOff

\begin{document}

\setlength{\fboxsep}{-0.1pt}
\setlength{\fboxrule}{0.1pt}

$a\overlaysymbols[\mathbin]{/,\backslash}b_{\overlaysymbols{p,q}}$\quad
\fbox{$\overlaysymbols{/,\backslash}$}

\fbox{$\overlaysymbols{+,\times}$}

\fbox{$\overlaysymbols{+,[.1em]\times}$}

\overlaysymbols*{O,\sffamily I, \raisebox{.23ex}{$-$}}

\end{document}

在此处输入图片描述

相关内容