如何制作以二进制矩阵码为背景的标题?

如何制作以二进制矩阵码为背景的标题?

我尝试使用 tikz 为每一页生成一个带有二进制矩阵代码的标题。例如:

在此处输入图片描述

目前我的工作代码

\RequirePackage[svgnames]{xcolor}
\RequirePackage{tikz}
\RequirePackage{kpfonts}
\RequirePackage[explicit]{titlesec}
\newcommand*\chapterlabel{}
\titleformat{\chapter}
  {\gdef\chapterlabel{}
   \normalfont\sffamily\Huge\bfseries\scshape}
  {\gdef\chapterlabel{\thechapter\ }}{0pt}
  {\begin{tikzpicture}[remember picture,overlay]
\node[yshift=-3cm] at (current page.north west)
{
    \begin{tikzpicture}[remember picture, overlay]
        \draw[fill=Black] (0,0) rectangle (\paperwidth,3cm);
  \foreach \x in {0.0,2.0, ..., 25.0}{\foreach \y in {1, ..., 4.0} \node[draw=none,color=green] at (\x,\y) {\tiny A};};
  \foreach \x in {1.0,3.0, ..., 25.0}{\foreach \y in {1, ..., 4.0}  \node[draw=none,color=cyan] at (\x,\y) {\tiny T};};
        \node[anchor=east,xshift=.9\paperwidth,rectangle,rounded corners=20pt,inner sep=11pt,fill=MidnightBlue]
        {\color{white}\partlabel#1};
    \end{tikzpicture}
};

\end{tikzpicture} } \titlespacing*{\chapter}{0pt}{50pt}{-60pt}

目前结果: 结果

编辑:最后我找到了一种显示 1 和 0 矩阵的正确方法。我需要找到如何随机化要打印的数字,以及当 0 为白色时,1 为绿色。我更新了代码,而不是图片

答案1

以下是使用该功能的建议random

\documentclass[svgnames]{report}

\usepackage{tikz}
\colorlet{Random0}{white}
\colorlet{Random1}{green}
\usepackage{kpfonts}
\usepackage[explicit]{titlesec}
\newcommand*\chapterlabel{}
\titleformat{\chapter}
  {\gdef\chapterlabel{}
   \normalfont\sffamily\Huge\bfseries\scshape}
  {\gdef\chapterlabel{\thechapter\ }}{0pt}
  {\begin{tikzpicture}[remember picture,overlay,shift={(current page.north west)},yshift=-3cm]
        \path[fill=Black] (0,0) rectangle(\paperwidth,3cm);
        \foreach \x in {0,1, ..., 70}{
          \foreach \y in {0, ...,7} 
            \pgfmathsetmacro\Random{random(0,1)}
            \node[draw=none,color=Random\Random,anchor=south west,font=\tiny,xshift=-.05cm] 
              at (\x*.3cm,\y*.33cm) 
              {\Random};};
        \node[anchor=east,xshift=.9\paperwidth,rectangle,
              rounded corners=20pt,inner sep=11pt,
              fill=MidnightBlue]
              {\color{white}\chapterlabel#1};
   \end{tikzpicture}
  }
\titlespacing*{\chapter}{0pt}{50pt}{-60pt}
\begin{document}
\chapter{First chapter}
\end{document}

在此处输入图片描述

在此处输入图片描述

答案2

为了好玩,这里是 ConTeXt 中的一个解决方案。一些备注:

  1. 我使用的OCR-A字体与电影中使用的字体相匹配。
  2. 我使用三种色调的绿色。颜色在色彩空间中定义HSV,三种颜色只是具有不同的饱和度值。
  3. 为了方便使用,我使用进行排版。也TABLE可以使用 简单。\halign
  4. 对于ConTeXt用户来说,此代码还展示了如何使用interfaces.definecommand函数在lua端定义宏。
\definecolor[green]      [h=120,s=1,v=0.75]
\definecolor[darkgreen]  [h=120,s=1,v=0.5]
\definecolor[brightgreen][h=120,s=1,v=1]

\startsetups matrix
  \setupTABLE[style={\definedfont[name:ocraextended]}, background=color, backgroundcolor=black]
  \setupTABLE[frame=off, offset=none]
\stopsetups

\setupbodyfont[dejavu]

\startluacode
  local colors = { "green", "darkgreen", "brightgreen" }
  local showNumber = function()
    local color  = math.random(3)
    local number = math.random(2) - 1
    context.style({color=colors[color]}, number)
  end

  local printMatrix = function(rows,cols)
    context.bTABLE{setups="matrix"}
      for i = 1,cols do
        context.bTR()
        for j = 1,rows do
          context.bTD()
            showNumber() 
          context.eTD()
        end
        context.eTR()
      end
    context.eTABLE()
  end

  interfaces.definecommand {
    name = "printMatrix",
    arguments = {
      { "option", "number" },
      { "option", "number" },
    },
    macro = printMatrix,
  }
\stopluacode

\starttext

\startTEXpage[offset=1mm]
\printMatrix[40][40]
\stopTEXpage

\stoptext

这使

在此处输入图片描述

相关内容