如何在 LaTex 中创建此类页面

如何在 LaTex 中创建此类页面

我想在 A4 页面上以最小边距创建某种重复图案。作为示例图像,随此文本一起提供。 在此处输入图片描述

但我不知道该怎么做。任何提示都是有用的。

答案1

我会使用tikz两个\foreach循环。以下是示例:

\documentclass{article}
\usepackage[margin=0.5in, noheadfoot, nomarginpar]{geometry}
\usepackage{tikz}
\usepackage{showframe}
\renewcommand*\ShowFrameLinethickness{0.2pt}
\renewcommand*\ShowFrameColor{\color{blue}}


\tikzset{
  every node/.style = {
    draw,
    red,
    text = black,
    font = \large,
    line width = 1.6pt,
    rounded corners,
    minimum width = 3cm,
    minimum height = 1cm,
  }
}

\pagestyle{empty}

\begin{document}
\begin{figure}
  \centering
  \begin{tikzpicture}
    \foreach \y [evaluate=\y as \yo using \y*1.25] in {0,...,19} {
      \foreach \x [evaluate=\x as \xo using \x*3.75, evaluate=\d using int(\x+5*\y+1)] in {0,...,4} {
        \node at (\xo,-\yo) {The day \d}; }}
  \end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述


编辑。这是稍微修改过的代码,现在生成带有节点行的段落,如果需要,这些节点行将继续到另一页。它们被复制到里面,\foreach因此您可以更改所需的行数。

有几件事。除非您指定文本宽度,否则默认情况下
节点不会添加换行符,也不会接受\newline\\。我还用和添加了小填充。\parinner xsepinner ysep

水平空间是可伸缩的,取决于标签的大小。垂直空间由 控制,\lineskip默认情况下等于 1pt。我将其更改为1em。此时,我必须发表评论。在此示例中,段落的内容很可能超出标准段落高度,而 LaTeX 会添加存储在 中的最小距离\lineskip以避免重叠。我开发这一事实,并将最小空间改为1em。这在其他例子中几乎肯定不会起作用。

\documentclass{article}
\usepackage[margin=0.5in, noheadfoot, nomarginpar]{geometry}
\usepackage{tikz}

\tikzset{
  every node/.style = {
    draw, red, line width = 1.6pt, rounded corners,
    text = black, font = \large, align = center,
    text width = 4cm,
    inner xsep = 3pt, inner ysep = 6pt,
  }
}
\newsavebox\textlabel
\NewDocumentCommand\TL{s}{%
  \IfBooleanF{#1}{\hfill}%
  \begin{tikzpicture}[baseline]
    \node {%
      Multiple line sample
      \par Second line
      \par Third line
    };
  \end{tikzpicture}}

\pagestyle{empty}


\begin{document}
\setlength\parindent{0pt}%
\setlength\lineskip{1em}%   % minimum vertical space

\foreach \x in {1,...,20} {\par\TL* \TL \TL \TL};
\end{document}

注意,这也可以用 进行排序longtable

答案2

MadyYuvi 已经向您指出了一个合适的包裹,我将简单地对此进行扩展。

\documentclass{article}
\usepackage{multicol,tcolorbox}
\newtcolorbox{mybox}{colframe=red,colback=white}

\begin{document}
    \begin{multicols}{3}
        \begin{mybox}The Day 1\end{mybox}
        \begin{mybox}The Day 1\end{mybox}
        \begin{mybox}The Day 1\end{mybox}
        \begin{mybox}The Day 1\end{mybox}
        \begin{mybox}The Day 1\end{mybox}
        \begin{mybox}The Day 1\end{mybox}
        % I think you can imagine how to go on...
    \end{multicols}
\end{document}

在此处输入图片描述

编辑:增加数字。

根据评论中的要求,您可以增加框中显示的数字。最简单的方法当然是手动增加数字,因此

\begin{mybox}The Day 1\end{mybox}
\begin{mybox}The Day 2\end{mybox}

等等。这当然不是最好的办法。

然后,您就有了添加一个计数器来为您编号的想法,请参阅 MadyYuvi 的回答 (+1)。这仍然需要\begin{mybox}The Day \theboxcounter\end{mybox}一遍又一遍地重复代码。

这就是为什么恕我直言,最好的解决方案涉及 for 循环(forloop包):

\documentclass{article}
\usepackage{multicol,tcolorbox,forloop}
\newtcolorbox{mybox}{colframe=red,colback=white}

\begin{document}
    \begin{multicols}{3}
        \newcounter{boxcounter}
        \forloop{boxcounter}{1}{\value{boxcounter} < 25}{%
            \begin{mybox}The Day \theboxcounter\end{mybox}
        }
    \end{multicols}
\end{document}

结果数字不断增加 顺便说一句,如果您需要多页这样的框,这个答案是完全适用的。

答案3

根据的评论,刚刚在@Οὖτις 答案中OP添加了一个,counter

\documentclass{article}
\usepackage{multicol,tcolorbox}

\newcounter{boxcounter}%
\setcounter{boxcounter}{0}%
\renewcommand{\theboxcounter}{\arabic{boxcounter}}%

\newtcolorbox{mybox}{code={\refstepcounter{boxcounter}},colframe=red,colback=white}

\begin{document}
    \begin{multicols}{3}
        \begin{mybox}The Day \theboxcounter\end{mybox}
        \begin{mybox}The Day \theboxcounter\end{mybox}
        \begin{mybox}The Day \theboxcounter\end{mybox}
        \begin{mybox}The Day \theboxcounter\end{mybox}
        \begin{mybox}The Day \theboxcounter\end{mybox}
        \begin{mybox}The Day \theboxcounter\end{mybox}
        % I think you can imagine how to go on...
    \end{multicols}
\end{document}

在此处输入图片描述

相关内容