Как создать этот тип страницы в LaTex

Как создать этот тип страницы в LaTex

Я хочу создать своего рода повторяющийся узор на странице А4 с минимальными полями. В качестве примера привожу изображение с этим текстом. введите описание изображения здесь

Но я не понимаю, как это сделать. Любая подсказка будет полезна.

решение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}

введите описание изображения здесь


EDIT. Вот немного измененный код, который теперь генерирует параграфы со строками узлов, которые при необходимости будут продолжены на другой странице. Они копируются внутри, \foreachтак что вы можете изменить, сколько строк вам нужно.

Пара вещей.
Узлы не добавляют переносы строк и не принимают \newline, \\или \parпо умолчанию, если вы не укажете ширину текста. Я также добавил небольшой отступ с помощью inner xsepи inner 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}

введите описание изображения здесь

Связанный контент