如何在 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,\\或,除非您指定文字寬度。我還用和\par添加了小填充。inner 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}

在此輸入影像描述

相關內容