带有圆角的哥德尔编码?

带有圆角的哥德尔编码?

生成哥德尔码的最简单方法是使用$\ulcorner$$\urcorner$,我们可以写成$\ulcorner p\urcorner$将公式包含$p$在代码中。

Buss 编写了一个宏,在许多情况下它比哥德尔编码看起来更好。

宏 Godeln{} 是 egreg 最近建议的,作为最近一个问题的回答(数学模式中的点 x),是 Buss 改进的 的改进\(\ulcorner \urcorner\)

我的问题是:是否可以将 egreg 代码的角弄圆,例如使用 TikZ,以获得明显不同的代码?

平均能量损失

\documentclass[]{article}
\usepackage{amsmath, amssymb}

\newlength{\gnCornerHgt}
\newlength{\gnArgHgt}

\makeatletter
\newcommand{\Godeln}[1]{\mathinner{\mathpalette\Godeln@{#1}}}
\newcommand{\Godeln@}[2]{%
    \begingroup
    \settoheight{\gnCornerHgt}{$\m@th#1\ulcorner$}%
    \settoheight{\gnArgHgt}{$\m@th#1#2$}%
    \ifdim\gnArgHgt<\gnCornerHgt
    \setlength{\gnArgHgt}{0pt}%
    \else
    \addtolength{\gnArgHgt}{-\gnCornerHgt}%
    \fi 
    \raisebox{\gnArgHgt}{$\m@th#1\ulcorner$}%
    #2%
    \raisebox\gnArgHgt{$\m@th#1\urcorner$}%
    \endgroup
}
\makeatother

\begin{document}
    
    $\ulcorner 2^2\urcorner$ vs. $\Godeln{2^2}$
    
    
\end{document}  

答案1

Sandy G 代码的一个变体。主要区别在于

  1. 如何处理基线,以便我们保证符号具有正确的基线

  2. 参数\godel以数学模式排​​版。

  3. 侧边栏是固定的,不会收缩也不会伸展

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}

\newcommand{\sandygodel}[2][]{{}\mathbin{\vcenter{\hbox{\tikz{
  \node[inner ysep=-1pt, inner xsep=3pt](M){#2\strut};
  \draw[rounded corners=.5mm, #1]([xshift=-.3em]M.north east)--(M.north east)--++(0,-.3em);
  \draw[rounded corners=.5mm, #1]([xshift=.3em]M.north west)--(M.north west)--++(0,-.3em);
}}}}{}}


\newcommand{\godel}[2][]{%
  \mspace{1\medmuskip}%
  \vphantom{#2}%
  \begin{tikzpicture}[baseline=(M.south)]
    \node[inner ysep=0pt,inner xsep=3pt](M){\smash[b]{$#2\mathstrut$}};
    \draw[rounded corners=.5mm,#1]([xshift=-1mm]M.north east)--(M.north east)--++(0,-.1);
    \draw[rounded corners=.5mm,#1]([xshift=1mm]M.north west)--(M.north west)--++(0,-.1);
  \end{tikzpicture}%
  \mspace{1\medmuskip}%
}

\begin{document}

\tableofcontents

\section{Egreg's $\godel{A}$ and $\godel[thick]{A}$}

Some examples: $\godel{a}\godel{A}\godel{g}\godel{(}$

Squeezed: \hbox spread -10pt{$\godel{a}\godel{A}$}

Math: $\godel{r\in R}$

\medskip

{\Large Some examples: $\godel{a}\godel{A}\godel{g}\godel{(}$}

\section{Sandy's $\sandygodel{A}$ and $\sandygodel[thick]{A}$}

Some examples: $\sandygodel{a}\sandygodel{A}\sandygodel{g}\sandygodel{(}$

Squeezed: \hbox spread -10pt{$\sandygodel{a}\sandygodel{A}$}

Math: $\sandygodel{$r\in R$}$

\medskip

{\Large Some examples: $\sandygodel{a}\sandygodel{A}\sandygodel{g}\sandygodel{(}$}

\end{document}

在此处输入图片描述

答案2

这是一个稍微简单一点的用 Ti 自己画的版本.5mmZ. 您可以通过更改命令中的来调整圆角的半径\draw。您可以通过更改 来调整水平间距inner xsep,通过更改 来调整垂直间距inner ysep

在此处输入图片描述

还有一个可选参数可用于更改样式\draw。例如\godel[thick]{a}。颜色也有效。

\documentclass{article}

\usepackage{tikz}

\DeclareRobustCommand{\godel}[2][]{{}\mathbin{\vcenter{\hbox{\tikz{
  \node[inner ysep=-1pt, inner xsep=3pt](M){#2\strut};
  \draw[rounded corners=.5mm, #1]([xshift=-.3em]M.north east)--(M.north east)--++(0,-.3em);
  \draw[rounded corners=.5mm, #1]([xshift=.3em]M.north west)--(M.north west)--++(0,-.3em);
}}}}{}}

\begin{document}

Some examples: $\godel{a}\godel{A}\godel{g}\godel{(}$

\section{Here is a G\"odel code $\godel[thick]{a}$}

\end{document}

相关内容