![问题或疑问,如何创建个性化的周历。有没有更聪明的方法?](https://linux22.com/image/407699/%E9%97%AE%E9%A2%98%E6%88%96%E7%96%91%E9%97%AE%EF%BC%8C%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%B8%AA%E6%80%A7%E5%8C%96%E7%9A%84%E5%91%A8%E5%8E%86%E3%80%82%E6%9C%89%E6%B2%A1%E6%9C%89%E6%9B%B4%E8%81%AA%E6%98%8E%E7%9A%84%E6%96%B9%E6%B3%95%EF%BC%9F.png)
问题或疑问,如何创建个性化的周历。有没有更聪明的方法?
我编写了以下代码来为我的妻子创建日程表。我遇到了一些问题,但我还是成功做到了。但我相信一定有更聪明的方法来做同样的事情。
在循环中,我放置了每周和每月的每一天的开始,例如 10/2(2 月 10 日)。10(变量 diaI 表示星期一),变量 diaF 相当于一周的结束(星期日)。显然,当它是 28 日(例如)时,标题是错误的,因为总和是 35 ... 安排起来并不复杂,将值也放在 foreach 中就足够了,而不需要计算。
但有没有更好的方法来做同样的事情呢?
\documentclass[12pt]{article}
\usepackage[landscape, a4paper, margin=1.5cm]{geometry}
\usepackage{tgheros,tikz,array}
\usepackage[brazil]{babel}
\usepackage[brazil]{translator}
\usepackage[utf8]{inputenc}
\usetikzlibrary{calendar}
\begin{document}
\sffamily
\newcommand\zero[1]{%
\pgfmathparse{#1<10?"0":{},int(#1)}\pgfmathresult%
}
\newcommand\daytext[2]{%
\begin{tabular}{|>{\mdseries\tiny}r|p{3cm}|}
\multicolumn{2}{c}{#1} \\
\multicolumn{2}{c}{#2\color{black}} \\[1ex]
\hline
7:30 & \\\hline
8:00 & \\\hline
8:30 & \\\hline
9:00 & \\\hline
9:30 & \\\hline
10:00 & \\\hline
10:30 & \\\hline
11:00 & \\\hline
11:30 & \\\hline
12:00 & \\\hline
12:30 & \\\hline
13:00 & \\\hline
13:30 & \\\hline
14:00 & \\\hline
14:30 & \\\hline
15:00 & \\\hline
15:30 & \\\hline
16:00 & \\\hline
16:30 & \\\hline
17:00 & \\\hline
17:30 & \\\hline
18:00 & \\\hline
18:30 & \\\hline
19:00 & \\\hline
19:30 & \\\hline
20:00 & \\\hline
20:30 & \\\hline
21:00 & \\\hline
\end{tabular}
}
\foreach [evaluate=\diaF using \diaI+7] \diaI/\Mes in {
10/2, 17/2, 24/2,
2/3, 9/3, 16/3, 23/03, 30/03,
6/4, 13/4, 20/4, 27/4,
4/5, 11/5, 18/5, 25/5,
1/6, 8/6, 15/6, 22/6, 29/6,
6/7, 13/7, 20/7, 27/7,
3/8, 10/8, 17/8, 24/8,
7/9, 14/9, 21/9, 28/9,
5/10, 12/10, 19/10, 26/10,
2/11, 9/11, 16/11, 23/11, 30/11,
7/12, 14/12, 21/12, 28/12}{
\begin{tikzpicture}
\node at (9,9) {\Huge Planejamento Rosa Lantmann de \zero{\diaI} até dia \zero{\diaF}/\zero{\Mes}/2020};
\calendar (cal)
[dates=2020-\Mes-\diaI to 2020-\Mes-\diaF,day list right,day xshift=4.5cm,
month xshift=0pt, day text={\daytext{\%wt}{\Huge\%d-}}]
if(equals=04-20,
equals=04-21,
equals=05-01,
equals=09-07,
equals=09-08,
equals=10-12,
equals=11-02,
equals=11-15,
equals=12-24,
equals=12-25,
equals=12-30) [font=\bfseries,red]
if(weekend) [red]
if(Sunday) [shape=coordinate];
\end{tikzpicture}
}
\end{document}