如何让下一个汇编更长?

如何让下一个汇编更长?

我的问题是如何在休闲活动的同时延长编译时间?

我想使连续的编译更长,例如:

\newif\ifpaid
\everypar{\ifpaid{}\else {slowing down action dependent on a value written into external file} \fi}
\ifpaidfalse
\ifpaid{}\else{increase the value making the code slow}\fi

当然,代码的这一部分对于新手来说应该是比较隐藏的。

从 \if-conditional 的名称可以看出这种代码的用途。

编辑:我已经提出了标准的 TeX/LaTeX 解决方案,但也欢迎任何其他技巧。

答案1

你必须像处理计算机病毒一样,让用户一开始就自愿参与到剧情中。对于病毒来说,这是通过让用户点击某些东西来实现的,希望这是有益的东西。对于 LaTeX 来说,这意味着让用户包含一个他被告知是有益的文件(或样式)

说实话,虽然我根据之前的回答编写了代码,提取 LaTex 文档的结构,包括注释,我不太明白计数器Delay是如何工作的(每次编译时它都会增加 5,可能是多次传递的结果\@starttoc??)。但它确实有效。

这是与逻辑相关的 innocuous.tex \@starttoc(已编辑以减少非必要代码,并且不再需要调用来\tableofcontents操作)

\usepackage{pgffor}
\newcounter{Delay}
\newcommand\delay[1]{%
  \setcounter{Delay}{#1}%
  \foreach\i in{1,...,#1}{%
    \i, % REPLACE THIS LINE WITH SOMETHING THAT SQUANDERS A SHORT AMOUNT OF TIME
  }%
  \stepcounter{Delay}%
}
\makeatletter
\AtBeginDocument{\@starttoc{xyz}}
\makeatother
\AtEndDocument{\addtocontents{xyz}{\protect \delay{\theDelay}}}

然后,只要您让用户访问\input该文件:

\documentclass{article}
\input{innocuous}
\begin{document}
Testing
\end{document}

每次编译时,它都会增加调用的循环次数\delay。在这里,我只打印出循环索引来演示,但您可能希望用一些[非打印]来替换这一行,这会占用少量(但不是无限小)的时间。

每次连续编译的循环计数\delay为,5i-2其中 i 是编译次数。该方法通过创建一个.xyz包含以下行的文件来运行

\delay{69}

其中,每次编译时,索引都会增加。当代码被编译时,它将执行 69 个延迟循环,然后将索引增加 5。

答案2

文档:

\documentclass{article}

\usepackage{infinitywait}

\begin{document}

Hello world

\end{document}

包裹infinitywait.sty

\ProvidesPackage{infinitywait}
  [2017/09/29 v0.9 how to occupy the wait for Infinity War release (JFB)]
\def\infinitywait@N{1000000}
\AtEndDocument{%
   \immediate\write\@mainaux{%
    \gdef\string\infinitywait@N{\the\numexpr2*\infinitywait@N}}%
   \count@ \infinitywait@N\relax
   \loop
    \advance\count@\m@ne
   \ifnum\count@>\z@
   \repeat
}
\endinput

更好infinitywait.sty。在切换到这个之前最好先清理掉前一个的辅助文件……

\ProvidesPackage{infinitywait}
  [2017/09/29 v0.99 how to occupy the wait for Infinity War release (JFB)]
\def\infinitywait@N{1000}
\AtEndDocument{%
   \immediate\write\@mainaux{%
    \gdef\string\infinitywait@N{\the\numexpr1000+\infinitywait@N}%
   }%
   \count@ \infinitywait@N\relax
   \loop
    {\count@\infinitywait@N\relax
     \loop
     \advance\count@\m@ne
     \ifnum\count@>\z@
     \repeat}%
    \advance\count@\m@ne
   \ifnum\count@>\z@
   \repeat
}
\endinput

相关内容