\ 为 LaTeX 用户解答圆周率日谜题

\ 为 LaTeX 用户解答圆周率日谜题

这个问题可能不太严肃,但为了纪念\pi这一天,我想收集一组 LaTeX 谜语。目的是鼓励新手学习一些非常基本的 LaTeX 命令。以下是一个例子:

\documentclass{article}
\usepackage{tikz}
\usepgfmodule{nonlineartransformations}
\usetikzlibrary{shapes}
\usetikzlibrary{patterns}
\makeatletter
% from https://tex.stackexchange.com/q/56353/121799
\newcommand{\gettikzxy}[3]{%
  \tikz@scan@one@point\pgfutil@firstofone#1\relax
  \global\edef#2{\the\pgf@x}%
  \global\edef#3{\the\pgf@y}%
}
% from the manual section 103.4.2
% \pgf@x will contain the \xout{radius} angle
% \pgf@y will contain the distance \pgfmathsincos@{\pgf@sys@tonumber\pgf@x}%
% pgfmathresultx is now the cosine of \xout{radius} radius and 
% pgfmathresulty is the sine of radius 
% \pgf@x=\pgfmathresultx\pgf@y% 
% \pgf@y=\pgfmathresulty\pgf@y%
% what the thing in the pgf manually is probably doing it to express the x coordinate in pt
% then take the cos and sin of x/pt (i.e. if x=50pt then it will return cos(50))
% and multiply the outcome by a the y coordinate
% (x_new,y_new) = (y_old cos(x_old/pt), y_old sin(x_old/pt))
% now comes a slightly modified version
\def\marmotransformation{% modified version of the manual 103.4.2 Installing Nonlinear Transformation
\advance\pgf@x by -\xC% relative
\advance\pgf@y by -\yC% coorinates
\edef\relX{\the\pgf@x}%
\edef\relY{\the\pgf@y}% Yes, there is a more elegant solution based on \pgfpointadd
\pgfmathsetmacro{\relNx}{\xN-\xC}%
\pgfmathsetmacro{\relNy}{\yN-\yC}%
\pgfmathsetmacro{\angleN}{atan2(\relNy,\relNx)}%
\pgfmathsetmacro{\LeN}{veclen(\relNx,\relNy)}%
\pgfmathsetmacro{\myp}{(\relX*\relNx+\relY*\relNy)/(\LeN*28.3465)}
\pgfmathsetmacro{\myo}{(((\relY*\relNx-\relX*\relNy))/(\myp*\LeN*(28.3465*pi/180)))+\angleN)}
\pgfpointadd{\pgfqpoint{\xC}{\yC}}{\pgfpointpolarxy{\myo}{\myp}}
} % I have no idea why the factor 5 is needed
% I'm using https://tex.stackexchange.com/a/167109/121799
\newcommand{\apple}[1][ball color=red]{\hspace*{-0.5cm}
\ensuremath{\vcenter{\resizebox{0.4cm}{!}{\begin{tikzpicture}[#1]
%\path[use as bounding box](-0.1,-0.1) rectangle (0.1,0.1);
\coordinate (C) at (0,3) {};
\gettikzxy{(C)}{\xC}{\yC}
\coordinate (N) at (0,0) {};
\gettikzxy{(N)}{\xN}{\yN}
\begin{scope}[transform shape nonlinear=true]
\pgftransformnonlinear{\marmotransformation} 
\shade[shading=ball,opacity=1] (0,0) circle (2);
\end{scope}
\draw[smooth,fill=black](-0.15,3) .. controls (-0.15,2.5) .. (0,2) to 
(0.1,2) .. controls (-0.05,2.5) .. (-0.05,3) --cycle;
\end{tikzpicture}
}}}}
\begin{document}
\resizebox{!}{4cm}{$\pi\ne\apple$}
\end{document}

在此处输入图片描述

(提示:答案是不应该放在 \pi\zz{a} 上的东西。)

问题:您知道类似的谜语吗?可以发布一下吗?

澄清:要学习的基本 LaTeX 命令是\pi\ne,而不是非线性变换。

感谢大家!我对这个“问题”得到的所有精彩答案感到非常震惊。不幸的是,这个论坛的规则让我只能接受其中一个。最后我决定接受 Paulo Cereda 的答案,因为我希望通过这种方式获得的声誉能让他花更多时间在他的论文上。;-)

答案1

当然,用鸭子来表示圆周率的最好方式就是用鸭子。:)例如,5 只相同颜色的鸭子代表数字 5,等等。但是,这个系统必须依靠一只鸭子来表示没有鸭子,所以我用一种美国黑鸭来做相应的反应。

以下代码必须使用 LuaLaTeX 执行,数字生成器由罗塞塔密码。请注意,此代码运行缓慢。如果您要指定数字(和鸭子)的数量,请n在 Lua 代码范围内更改变量。:)

更新:该算法从零开始。:)

\documentclass[12pt]{article}
\usepackage{tikzducks}
\usepackage{xparse}
\usepackage[margin=1cm]{geometry}
\usepackage{luacode}

\ExplSyntaxOn
\NewDocumentCommand{\ducks}{mm}{
  \int_compare:nTF { #1 != 0 }
  { \prg_replicate:nn { #1 } { \tikz[scale=.25]{ \duck[body=#2]; } \hspace{.16667em} } }
  { \tikz[scale=.25]{ \duck[body=black]; } \hspace{.16667em} }
}
\ExplSyntaxOff

\setlength{\parindent}{0pt}
\pagestyle{empty}

\begin{document}
\raggedright
\begin{luacode}
a = {}
n = 1000
cl = false
len = math.modf( 10 * n / 3 )

for j = 1, len do
    a[j] = 2
end
nines = 0
predigit = 0
for j = 1, n do
    q = 0
    for i = len, 1, -1 do
        x = 10 * a[i] + q * i
        a[i] = math.fmod( x, 2 * i - 1 )
        q = math.modf( x / ( 2 * i - 1 ) )
    end
    a[1] = math.fmod( q, 10 )
    q = math.modf( q / 10 )
    if q == 9 then
        nines = nines + 1
    else
        if q == 10 then
            tex.print('\\ducks{' .. (predigit + 1) .. '}{' ..
            (cl and 'light' or '')  .. 'gray}')
            cl = not cl
            for k = 1, nines do
                tex.print('\\ducks{1}{black}')
            end
            predigit = 0
            nines = 0
        else
            tex.print( '\\ducks{' .. predigit .. '}{' .. 
            (cl and 'light' or '') .. 'gray}' )
            cl = not cl
            predigit = q
            if nines ~= 0 then
                for k = 1, nines do
                    tex.print('\\ducks{9}{' ..
                    (cl and 'light' or '') .. 'gray}')
                    cl = not cl
                end
                nines = 0
            end
        end
    end
end
tex.print( '\\ducks{' .. predigit .. '}{' ..
(cl and 'light' or '') .. 'gray}' )
\end{luacode}
\end{document}

嘎嘎

圆周率日快乐!嘎嘎!:)

答案2

几乎随机的字符生成器,​​用 XeTeX 编译:

\font\forpi="[FreeSans.otf]"
\forpi
\def\printpi3.{3.\otherpi}
\def\otherpi#1#2#3{%
  \iffontchar\font"#1#2
    \char"#1#2
  \else
    \char"1#1#2
  \fi
  \ifx#3\end\else\expandafter\otherpi\fi#3
}


\printpi
3.
243F
6A88
85A3
08D3
1319
8A2E
0370
7344
A409
3822
299F
31D0
082E
FA98
EC4E
6C89
4528
21E6
38D0
1377
BE54
66CF
34E9
0C6C
C0AC
\end

在此处输入图片描述

练习。

  1. 所有的空间都到哪里去了?
  2. 为什么代码仅具有一个%

π 的十六进制展开式来自http://turner.faculty.swau.edu/mathematics/materialslibrary/pi/pibases.html

答案3

编辑:为非英语母语人士提供翻译。

以下是两个简单的谜语:

\documentclass{article}
\begin{document}
\noindent
You better watch out,\\
$u\beta \not \pi\dots$\\
Q: Who is coming to town?
\end{document}

在此处输入图片描述

引用圣诞节的诗句“你最好小心,你最好不要哭,最好不要生气,我告诉你为什么,圣诞老人要来镇上了。”这里的“u beta not pi”与“你最好不要哭”的节奏相同。

\documentclass{article}
\parindent 0pt
\begin{document}
Clue: {3\tiny$\pi\gg$s}\\
Q: Who is the bad guy in this story?
\end{document}

在此处输入图片描述

“三只小猪”指的是童话故事“三只小猪”,其中大灰狼是反派角色。


以下是解密游戏。通过读取图像构建 LaTeX 代码。

\documentclass{article}
\begin{document}
The doctor says...$\pi\ss \in a \cup$
\end{document}

在此处输入图片描述

也许是针对老年人群,当被要求提供尿液样本时,口语描述是“在杯中撒尿”。

\documentclass{article}
\parindent0pt
\begin{document}
\def\you{8}
$\if \you 8 a \pi\ll\you'\ll b \fi\ne$,\\
but\\
$\if \you 8 5 \pi\ll{s}\you'\ll \not b \fi\ne$!
\end{document}

在此处输入图片描述

“如果你 [吃] 一颗药丸,你会没事,但如果你 [吃] 五颗药丸,你就不会没事了” 代码本质上就是这么写的。当然,LaTeX 版本是最微妙的,测试和排版文本也是如此。它进一步依赖于设置为 的\if...\fi宏。\you8

\documentclass{article}
\begin{document}
$a \big(\pi\ll) {\wedge}d \in a \cup$.
\end{document}

在此处输入图片描述

这里只有一行愚蠢的语句,“杯子里塞着一颗大药丸”就是代码的样子。

\documentclass{article}
\parindent0pt
\begin{document}
The Mama circle asked her child what time ($t$) is it?\\
The reply: $t = 2 (\mathrm{Go})^{\pi D}$
\end{document}

在此处输入图片描述

知道t就是时间,数学上可能读作“去便盆(又称浴室)的时间了”。

答案4

好吧,我敢。这是法国工程师学校“预备班”学生数学水平的著名测试。法语版,配有英语翻译和 IPA 发音。

\documentclass{article}
\usepackage[safe]{tipa}
\usepackage{amsmath}
\begin{document}
\paragraph*{Question:}\leavevmode

Show that
\[
\frac{\text{cheval}}{\text{oiseau}} = \pi.
\]
(``$\text{\textsl{horse}}/\text{\textsl{bird}} = \pi$''.)

\paragraph*{``Proof'':}\leavevmode

$\text{oiseau} = \beta\ell$ (\text{b\^ete \`a ailes}, [\textipa{bEt a El}],
$\text{\textsl{winged beast}}$),
so
\[
\frac{\text{cheval}}{\text{oiseau}} = \frac{\text{cheva}\ell}{\beta\ell}
= \frac{\text{cheva}}{\beta}.
\]
But $\text{cheva} = \text{vache}$ (product is commutative) and 
$\text{vache} = \beta\pi$ (b\^ete \`a pis, [\textipa{bEt a pi}]; 
``$\text{\textsl{cow}} = \text{\textsl{beast with udders}}$''),
so 
\[
\frac{\text{cheva}}{\beta} = \frac{\beta\pi}{\beta} = \pi.
\]
C.Q.F.D. -- sorry, Q.E.D.

\end{document}

相关内容