“哦,怎么你们都在折纸?大家兴致很高哦?” “就 TikZ 用户手册,Calendar 日历模块里的十二面体立体日历啊。” foldable-dodecahedron-with-calendar-1 “啊这个啊,的确好玩。” “美中不足的是,月份总是英文,怎么试都不能换成中文。” “啊。这个啊。可以的,只是要用 translator 宏包。” “??可我都做好三个了!(这等事你倒勤快了!)没差,转送给外国同学好了,我再打印、重做。代码咧?” “先加载 xeCJKctex、设定字体,这些就不赘述了。接着加载 translator,并给出各月份的中文名称:

\usepackage{ctex}
\usepackage{translator}

\providetranslation{January}{一月}
\providetranslation{February}{二月}
\providetranslation{March}{三月}
\providetranslation{April}{四月}
\providetranslation{May}{五月}
\providetranslation{June}{六月}
\providetranslation{July}{七月}
\providetranslation{August}{八月}
\providetranslation{September}{九月}
\providetranslation{October}{十月}
\providetranslation{November}{十一月}
\providetranslation{December}{十二月}
其实 translator 的强大,在于可以把不同语言的翻译用 \ProvideDictionary 打包成模块,配合 babel 使用,不过今天我们只要中文定制、babel 又没有中文选项,就略过了。” “啊哈哈哈有了啊!还有什么可以玩儿的?” “这日历上面也没写清楚哪天是周一、周二,有时会混淆,给加个标题吧。代码很长、很难记,但也很好搜索——有了:
\makeatletter%
\tikzoption{day headings}{\tikzstyle{day heading}=[#1]}
\tikzstyle{day heading}=[]
\tikzstyle{day letter headings}=[
    execute before day scope={ \ifdate{day of month=1}{%
      \pgfmathsetlength{\pgf@ya}{\tikz@lib@cal@yshift}%
      \pgfmathsetlength\pgf@xa{\tikz@lib@cal@xshift}%
      \pgftransformyshift{-\pgf@ya}
      \foreach \d/\l in {0/M,1/T,2/W,3/T,4/F,5/S,6/S} {
        \pgf@xa=\d\pgf@xa%
        \pgftransformxshift{\pgf@xa}%
        \pgftransformyshift{\pgf@ya}%
        \node[every day,day heading]{\l};%
      } 
    }{}%
  }%
]
\makeatother%
放在文件 preamble, 再在代码里的 every calendar/.style 里添加 day letter headings,day headings = orange (或其它颜色、字体选项), 就行了。” “我知道了,日数标题要换成中文的话,
\foreach \d/\l in {0/M,1/T,2/W,3/T,4/F,5/S,6/S}
换成
\foreach \d/\l in {0/一,1/二,2/三,3/四,4/五,5/六,6/日}
就行了是吧。” “对了,你有进步了呢,懂得仔细看代码,而不是直接瞎问一通了。” “嘿嘿,我也是很认真学习的啊。……其实是还有个问题啦。有没有什么办法,可以在特定日期上做一个记号呢?比如假期啊,生日啊等等的。” “可以啊,不过有一个小手续。比如说你想标记 2016 年 12 月 4 日吧。那就得在十二月的月历上,给个名字:
face 12={\calendar (dec) [dates=\the\year-12-01 to \the\year-12-last];}
然后就可以在同一个 tikzpicture 里直接针对十二月里的任何一个日期操作了:”
\begin{scope}[on background layer]
\node[shape=star,fill=orange!40!white,draw=none] at (dec-2016-12-04) {};
\end{scope}
“不错,不错!真是新年送礼佳品啊!” zh-calendar-dodecahedron-1 祝各位春节快乐!春运路上一路顺风!

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部