生成哥德尔码的最简单方法是使用$\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 代码的一个变体。主要区别在于
如何处理基线,以便我们保证符号具有正确的基线
参数
\godel
以数学模式排版。侧边栏是固定的,不会收缩也不会伸展
\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 自己画的版本钾.5mm
Z. 您可以通过更改命令中的来调整圆角的半径\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}