使用自定义符号

使用自定义符号

作为综合的现有的符号集没有尽一切可能可能存在的符号,如果你不能很好地排版它,那么发明一个新符号就毫无乐趣了。

我知道的一个选项是以某种方式“组合”现有符号,例如负空间。所以我可以写类似的东西m \gg\!\!= k,但这种技术有明显的局限性。

这里最好的方法是什么?(“停止无缘无故地编造新符号”是一个有效的答案。)

编辑:简单说一下,我真正感兴趣的是更好地显示排版源代码,特别是使写成多个 ASCII 字符的常用操作符看起来更像一个符号。这通常会导致其他程序员无法识别的符号,而负间距技术就足够了。正如在对 vanden 的回答的评论中提到的,我对更普遍的情况很好奇。

答案1

虽然我不会去定义全新的符号,但我确实偶尔会发现自己想要一些与标准符号略有不同的符号。我在讲课时遇到过这种情况:例如,我发现我希望 ⇔ 看起来更重要一些。对于这些情况,我使用 TikZ 重新绘制它:

\newcommand{\textIff}{\tikz \draw (-3ex,.25ex) -- (-.25ex,.25ex) (-3ex,-.25ex) -- (-.25ex,-.25ex) (-.5ex,.5ex) -- (0,0) -- (-.5ex,-.5ex) (-2.75ex,.5ex) -- (-3.25ex,0) -- (-2.75ex,-.5ex);\xspace}
\newcommand{\mathIff}{\mathrel{\textIff}}
\newcommand{\Iff}{\ifmmode\mathIff\else\textIff\fi\xspace}

我猜想使用 TikZ 而不是 MetaFont 是因为我已经知道如何将 TikZ 用于我的其他图表。

答案2

我正在努力避免引入 dontdothat 标签:-)

虽然确实有需要新标志的情况,但大多数地区似乎已经拥有了太多标志。发明新标志应该经过深思熟虑,因为这样做会给沟通带来新的障碍。

我认为我们应该能够在 TeX 及其朋友中引入新的符号(我们可以),但它应该足够困难以阻止轻浮的新奇事物。

如果一个人真的想要一个新的符号,而将现有的符号叠加在一起是不行的,那么元字体是为了。

答案3

我在这里使用 Gerold Meisinger 定义的 lst 环境:http://lambdor.net/?p=273

在此处输入图片描述

他使用listings环境将标签的 Haskell 表示替换到代码中。请注意如何>>=定义为>\!\!>\!\!=

\lstloadlanguages{Haskell}
\lstnewenvironment{HaskellCode}
    {\lstset{}%
      \csname lst@SetFirstLabel\endcsname}
    {\csname lst@SaveFirstLabel\endcsname}
    \lstset{
      basicstyle=\small\ttfamily,
      escapeinside={/+}{+/},
      flexiblecolumns=false,
      basewidth={0.5em,0.45em},
      literate={+}{{$+$}}1 {/}{{$/$}}1 {*}{{$*$}}1
               {=}{{$=$}}1 %{/=}{{$\neg$}}1
               {>}{{$>$}}1 {<}{{$<$}}1 {\\}{{$\lambda$}}1
               {++}{{$+\!\!\!+$}}1 {::}{{$:\!\!\!:$}}1
               {\\\\}{{\char`\\\char`\\}}1
               {->}{{$\rightarrow$}}2 {>=}{{$\geq$}}2 {<-}{{$\leftarrow$}}2
               {<=}{{$\leq$}}2 {=>}{{$\Rightarrow$}}2
               {\ .\ }{{$\circ$}}2 {(.)}{{($\circ$)}}2
               {<<}{{$\ll$}}2 {>>}{{$\gg$}}2 {>>=}{{$>\!\!>\!\!=$}}2
               {<<<}{{$\lll$}}2 {>>>}{{$\ggg$}}2 {-<}{{$\leftY$}}1 {^<<}{{$\hat{}\!\!\ll$}}2 {^>>}{{$\hat{}\!\!\gg$}}2
               {|}{{$\mid$}}1
               {undefined}{{$\bot$}}1
               {not\ }{{$\neg$}}1
               {`elem`}{{$\in$}}1
               {forall}{{$\forall$}}1
    }

相关内容