2

I’m trying to track down and verify an amusing LaTeX anecdote that I read or heard a while back: There was some graphics/diagrams package, and some commonly-used command from it, where what looked like a line in the output was not really implemented as a line, but as many superimposed tiny copies of the letters of the package author’s name (or perhaps the package name), so that every document using the package would contain a hidden “signature” from it.

My original vague memory was that this was Paul Taylor’s diagrams package, which does have some features reminiscent of this — it contains a time-bomb (it throws a error if the version you’re using is more than a few years old) and gives an attribution requirement as a condition of use. But searching around, I can’t find a source for this specific story, either for diagrams or for any other package. Can anyone else place this story?

2

The most recent version of diagrams.sty, released December 2019, is no longer obfuscated. It still contains the time bomb, though.

Reading the code, we see (lines 4045-4099) a macro \the@signature which builds a horizontal rule from segments corresponding to the Morse code for “PAUL” (plus additional code for “TAYLOR”, commented out).

%=======================================================================%
%                                                                       %
%       (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{}%

I'm not sure how to trigger the production of the signature. The \test@signature macro is called in \calc@horiz.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.