我正在尝试追踪并验证一个我之前读过或听到过的有趣的 LaTeX 轶事:有一些图形/图表包和一些常用的命令,其中输出中看起来像一行的东西实际上并没有实现为一行,而是包作者姓名(或可能是包名称)字母的许多叠加微小副本,因此使用该包的每个文档都包含一个隐藏的“签名”。
我最初的模糊记忆是Paul Taylor 的diagrams
包裹,它确实有一些让人联想到这个的功能——它包含一个定时炸弹(如果您使用的版本超过几年,它会抛出一个错误)并给出归属要求作为使用条件。但搜索了一下,我找不到这个特定故事的来源,无论是diagrams
或其他任何包。还有人能把这个故事放上来吗?
答案1
最新版本于diagrams.sty
2019 年 12 月发布,不再经过混淆处理。但它仍然包含定时炸弹。
阅读代码后,我们看到(第 4045-4099 行)一个宏\the@signature
,它根据与“PAUL”的摩尔斯电码相对应的段(加上“TAYLOR”的附加代码,已注释掉)构建了一条水平规则。
%=======================================================================%
% %
% (8A) SIGNATURE %
% %
%=======================================================================%
%
% Now test whether we have enough space to put our Morse Code signature on the
% stretching horizontal. Only do it in diagrams, where both fillers are "-",
% there is no middle, there is enough space and the rule breadth is positive.
% Do it on the 10th and then every 20th subsequent such occasion.
%
\def\test@signature{%
\ifincommdiag
\ifx\@filla\@fillh
\ifx\@fillb\@fillh
\ifdim\dimen3>\z@\else
\ifdim\dimen2>93\pixel@size % corrected 24.6.94 for P
\ifdim\dimen2>18\p@ % added 24.6.94 for high resolution
\ifdim\intended@breadth>\z@
\count@\signature@countdown
\advance\count@\m@ne
\ifnum\count@<\z@
\count@ 20%
\let\@signature\the@signature
\fi
\xdef\signature@countdown{\the\count@}%
\fi\fi\fi\fi\fi\fi\fi
%\showthe\skip2 %\expandafter\message{\signature@countdown}%
}%
% Dots, dashes and spaces are 2, 6 and 2 pixels wide, 1 pixel high.
% However at over 596 dpi resolution this unit is increased:
% \dimen2= 3pixels=0.17pt at 1270dpi, and 6pixels=.17pt at 2540dpi
\def\@morse#1{\vrule\horizhtdp width#1\dimen@\kern2\dimen@}%
%
% Paul Taylor = .--. .- ..- .-.. - .- -.-- .-.. --- .-.
% Code for "P" corrected 24.6.94 (Ralph Loader)
\def\the@signature{\rlap{%
\dimen@\pixel@size\at@least\dimen@{.182\p@}\pixel@round\dimen@
\advance\rule@height\dimen@
\@morse0\@morse0% 4
\@morse2\@morse6\@morse6\@morse2\@morse0\@morse0% P 28
\@morse2\@morse6\@morse0\@morse0% A 16
\@morse2\@morse2\@morse6\@morse0\@morse0% U 20
\@morse2\@morse6\@morse2\@morse2\@morse0\@morse0% L 24
% \@morse0\@morse0% space 4
% \@morse6\@morse0\@morse0% T 12
% \@morse2\@morse6\@morse0\@morse0% A 16
% \@morse6\@morse2\@morse6\@morse6\@morse0\@morse0% Y 32
% \@morse2\@morse6\@morse2\@morse2\@morse0\@morse0% L 24
% \@morse6\@morse6\@morse6\@morse0\@morse0% O 28
% \@morse2\@morse6\@morse2\@morse0\@morse0%% R 20
% \@morse0\@morse0% space 4
}}%
\def\signature@countdown{10}%
\def\@signature{}%
我不确定如何触发签名的生成。\test@signature
宏是在 中调用的\calc@horiz
。