答案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 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}