鉴于 Donald Knuth 传奇般的幽默感,人们不禁会认为他会屈从于这种诱惑,添加一两个“特殊”命令,这些命令会做一些意想不到或不寻常的事情,只是为了好玩。(我指的不仅仅是一些可爱或有趣的源代码注释,而是一些真正能做某事的东西。)
如果不是他,那么肯定某人在社区中,有人制作了 TeX、LaTeX、ConTeXt 的扩展、文档类、包或颠覆,或者编辑器等辅助程序,决定找点乐子,并扔出一个复活节彩蛋。
但目前我一个也想不起来。有人知道吗?
答案1
这不是一个完整的答案,但我刚刚写了下面的代码,重新定义了一个命令,使其参数随机旋转
即,\easteregg\footnote
声明所有脚注以随机量(-10 度到 +10 度之间)旋转其文本。
\documentclass{article}
\usepackage{rotating}
\usepackage[first=-10,last=10]{lcg}
\makeatletter
\newcommand{\globalrand}{\rand\global\cr@nd\cr@nd}
\makeatother
\newcommand{\easteregg}[1]{%
\expandafter\let\csname old\string#1\endcsname#1%
\expandafter\def\expandafter#1\expandafter##\expandafter1\expandafter{%
\csname old\string#1\endcsname{\protect\globalrand\protect\turnbox{\value{rand}}{##1}\protect\phantom{##1}}}%
}
\easteregg\emph
\easteregg\section
\begin{document}
\section{Test}
\section{More test}
\section{Examples}
\emph{Some} \emph{emphasized} \emph{text},
\emph{with} \emph{random} \emph{directions}
\end{document}
答案2
在读的时候计算机与排版 E 卷:计算机现代字体,我发现了一段确实能做一些事情的代码,绝对应该算作一个复活节彩蛋。
小写希腊字母的 METAFONT 来源\gamma
(见greekl.mf
) 读
cmchar "Lowercase Greek gamma";
beginchar(oct"015",10u#,x_height#,desc_depth#);
italcorr x_height#*slant-.5u#;
adjust_fit(0,0); pickup fine.nib;
pos1(hair,180); pos2(vstem+dw,90);
pos4(hair,0); pos5(vair,-90); pos6(hair,-180); pos7(hair,-180);
bot y1=.5772156649h; top y2r=h+oo; y4=y6=-.5d;
bot y5r=-d-o; top y7=h;
lft x1r=hround(.5u-.5hair); x2=3u; rt x4r=hround(w-2u); x5=.5[x4,x6];
rt x4r-lft x6r=hround 1/3[hair,stem]+eps; rt x7l=hround(w-u);
if x4l<x6l: x4l:=x6l:=x5; fi
pos3(hair,angle(z4-z2)+90); x3=superness[x2,x4]; y3=superness[y4,y2];
filldraw stroke z1e{up}...z2e{right}...z3e{z4-z2}
...z4e{down}...{left}z5e; % arc
filldraw stroke z5e{left}...z6e{up}..{2(x7-x6),y7-y6}z7e; % stem
math_fit(-.5772156649x_height#*slant,ic#-u#);
penlabels(1,2,3,4,5,6,7); endchar;
我们看到了 Knuth 隐藏这个复活节彩蛋的地方:进入笔画(即 的左勾拳\gamma
)开始于基线以上 x 高度的大约 57.72156649%。
对于那些不熟悉相关数学的人来说:这就是欧拉-马歇罗尼常数,在标准文献中用 表示 $\gamma$
。这使得 的绘图 \gamma
确实非常“元”。
欧拉-马歇罗尼常数(也称为欧拉常数)是分析和数论中反复出现的数学常数,通常用小写希腊字母伽马(γ)表示。
[...]
欧拉-马歇罗尼常数的数值精确到小数点后 50 位,为:
0.57721 56649 01532 86060 [...]
附录
小写的希腊字母\pi
在精神上也有类似的“惊喜”:
cmchar "Lowercase Greek pi";
beginchar(oct"031",10u#,x_height#,0);
[...] pi_stroke; % hook and bar
[...]
pair v[]; v1=(z4-z5) xscaled 3.14159; v2=(z6-z7) xscaled 3.14159;
[...] endchar;
子程序pi_stroke
定义在cmbase.mf
作为
def pi_stroke = pickup fine.nib;
[...]
y1=x_height-x_height/3.141592653589793; y2=y3; top y3l=x_height;
filldraw circ_stroke z3e---z2e...{x1-x2,3.14159(y1-y2)}z1e enddef;
但在我看来,这些 的出现3.14159
太“明显”了。它们作为复活节彩蛋的神秘性远不如0.57721
中的 \gamma
。
- 从技术上讲,
3.14159
METAFONT 每次绘制圆(或圆弧)或选择“圆形笔”时都会涉及此操作。您可能会说这些3.14159
“太琐碎了”。 - Knuth 对 的痴迷是众所周知的
\pi
。例如,请参阅这些公开讲座(YouTube 链接):为什么是 Pi? (2010 年)和Pi 与计算机编程艺术 (2019 年)。因此,我并不惊讶地发现3.14159
这里和那里都有这种东西。
答案3
考虑到 TeX 编码时计算机的限制,例如内存空间,我想没有人会想到占用内存空间的无用命令作为复活节彩蛋。
但“复活节彩蛋”一词的含义可能多年来一直在变化。用户和程序员对这个词的解释可能有所不同。我认为从斯坦福小组的角度来看,最合适的定义可以在黑客词典作者:Eric Raymond:隐藏在程序目标代码中的一条信息,目的是让反汇编或浏览代码的人发现,作为一种玩笑。有时其目的并非是开玩笑,而是为了表扬。
从这个意义上来说,TeX 包含一个复活节彩蛋。
但这种彩蛋是为特定人群准备的,可能就像魔术师的把戏一样,不应该向其他人解释。我决定给出一些线索,但我希望你们自己找到答案,享受其中的乐趣。
TeX 的 WEB 源包含
运行产生的最重要的输出
TeX
是“设备无关的”(数字视频接口) 文件,用于指定字符和规则在打印页面上的显示位置。这些文件的格式由 David R. Fuchs 于 1979 年设计。
然后
这我字节后面跟着四个或更多个字节,这些字节都等于十进制数 223(即
'337
八进制)。TeX
输出四到七个这样的尾随字节,直到文件的总长度是四个字节的倍数,因为这在每个字打包四个字节的机器上效果最好;但允许任意数量的 223,只要至少有四个。实际上,223 是一种在最后添加的签名。
二进制数字(或位)通常组合成三或四位序列,分别形成八进制数字(以 8 为基数;数字为 0-7)或十六进制数字(以 16 为基数;数字为 0-9 和 AF)。
David Fuchs 在 TUGboat 文章他又写道:
...后面跟着至少 4 个字节,包含数字 $223_{10}$ (八进制
'337
)。
所以八进制值可能是一个线索。使用程序员模式下的计算器或223 to octal
在 Google 搜索行中输入以验证他的转换是否正确。他朝着正确的方向迈出了一步,但还必须继续前进两次就看到复活节彩蛋了。
(Metafont 对 GF 文件有相同的约定。)
答案4
我不确定这是否是偶然发生的,但我认为不是。如果我输入 tex -v,版本号是 PI,TeX 3.1415926。这对我来说就像一个复活节彩蛋,然后我最终在谷歌上搜索 latex 复活节彩蛋并找到了这个问题。希望有更多,但似乎它们隐藏得很好 :D
附言:我使用 Ubuntu 14.04 并安装了 texmaker 以及我猜的 Latex,不太确定,但到目前为止一切都运行良好。