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