LaTeX 文档中的段落随机着色

LaTeX 文档中的段落随机着色

我通常用 LaTeX 来记录学校的笔记,我发现这样更容易集中注意力于段落之间颜色发生变化的文本,而这用老式的笔和纸很容易做到。

但是,在 LaTeX 上,有没有一种方法可以让编译器在渲染我的 pdf 时自动执行此操作并改变随机段落的颜色?

答案1

xcolor如果您使用 pdfTeX 或 LuaTeX(不是 XeTeX)作为引擎,则不需要外部包(除了)。

\documentclass{article}
\usepackage{everyhook,xcolor}

\newcommand{\randomcolor}{%
  \definecolor{randomcolor}{RGB}
   {
    \pdfuniformdeviate 256,
    \pdfuniformdeviate 256,
    \pdfuniformdeviate 256
   }%
  \color{randomcolor}%
}

\PushPostHook{par}{\randomcolor}

\begin{document}

\section{First}

One

Two

Three

\section{Second}

Four

Five

Six

\end{document}

原语后面\pdfuniformdeviate必须跟一个整数,并扩展为 0(含)和给定数字(不含)之间的均匀分布的随机整数。

使用everyhook比直接玩更安全\everypar

在此处输入图片描述

答案2

解决方案构想

在每个段落的开头,生成三个0到255之间的随机数,使用它们作为RGB参数来生成颜色,并在段落的开头应用该颜色。

代码

\documentclass{article}

\usepackage{insdljs}
\usepackage{rangen}

\usepackage{xcolor}

\usepackage{lipsum}

\def\randomlycolorparagraph{%
  % Get random color paramaters
  \RandomZ{\R}{0}{255}%\R
  \RandomZ{\G}{0}{255}%\G
  \RandomZ{\B}{0}{255}%\B
  % Generate random color
  \definecolor{randomcolor}{RGB}{\R,\G,\B}
  % Use color
  \color{randomcolor}}

\def\randomlycoloreveryparagraph{\everypar={\randomlycolorparagraph}}

\AtBeginDocument{\randomlycoloreveryparagraph}

\begin{document}

\lipsum[1-40]

\end{document}

解决方案详细信息

该解决方案使用兰根包,特别是生成三个介于 0 到 255 之间的随机数的命令。然后,这三个数字在命令\RandomZ中用作 RGB 值 \definecolor彩色包裹。

以上所有内容都捆绑在一个宏中,该宏使用命令应用于段落的开头\everypar

我更进一步,将 和 连接起来 \everypar\AtBeginDocument因此,随机颜色效果从文档的开头开始。如果您希望随机效果从某个中间点开始,请将命令放在 \randomlycoloreveryparagraph 您想要的位置随机的效果开始。

输出

在此处输入图片描述

您的输出可能看起来不同。颜色应该是随机的。

尖端

如果您希望 RGB 值在特定范围内,请在命令中调整范围值\RandomZ

相关内容