![TikZ 绘图-将旧日历样式的日期放在左边距](https://linux22.com/image/243079/TikZ%20%E7%BB%98%E5%9B%BE-%E5%B0%86%E6%97%A7%E6%97%A5%E5%8E%86%E6%A0%B7%E5%BC%8F%E7%9A%84%E6%97%A5%E6%9C%9F%E6%94%BE%E5%9C%A8%E5%B7%A6%E8%BE%B9%E8%B7%9D.png)
我正在编排一本教科书的格式。
下图显示了我想要做的第一件事。
有两件事需要实现:
- 我想“绘制”日期,
TikZ
以便以后能够进行更先进的格式化。 - 然后左边距必须写上“画”。
LaTeX 代码类似于以下内容:
\section{Name of the class}
\subsection{Chapter A : Numeric activities}
\day{Mon.}{28}{Nov.}{2011}
\subsubsection{Lesson}
...
\subsubsection{For Tuesday Nov. 29}
...
答案1
这是一个tikz
使用的解决方案包裹marginnote
:
\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{backgrounds}
\newcommand*{\Date}[4]{%
\begin{tikzpicture}[show background rectangle,inner frame sep=0pt,text width=1.5cm,align=center]
\node [fill=orange] at (0,0) (dayofweek) {#1};
\node [fill=white ] at ($(dayofweek) +(0,-\baselineskip)$) (dayofmonth) {#2};
\node [fill=white ] at ($(dayofmonth) +(0,-\baselineskip)$) (month) {#3};
\node [fill=orange] at ($(month) +(0,-\baselineskip)$) (dayofmonth) {#4};
\end{tikzpicture}
}
\reversemarginpar% to put the margin pars on the left
\begin{document}
\marginnote{\Date{Mon.}{28}{Nov}{2011}}
\noindent\lipsum[1]
\end{document}
答案2
您可以使用一个简单的tabular
环境来格式化日期,然后使用 来框定日期\fbox
;该marginnote
命令(来自同名包)允许您将日期作为边注。在下面的例子中,我说明了这种方法;该\MyDate
命令有一个强制参数(星期几);其他三个值是自动排版的(当然,您也可以将这些元素的全部或部分自定义为命令的参数):
\documentclass{book}
\usepackage[table]{xcolor}
\usepackage{marginnote}
\usepackage{datetime}
\usepackage{lipsum}
\definecolor{mycolor}{RGB}{255,213,171}
\newcommand\MyDate[1]{%
\marginnote{\setlength\fboxsep{0pt}%
\fbox{\setlength\extrarowheight{3pt}%
\begin{tabular}{>{\bfseries}c}
\rowcolor{mycolor} #1 \\
\large\the\day \\
\large\shortmonthname. \\
\rowcolor{mycolor} \the\year
\end{tabular}%
}}%
}
\reversemarginpar
\begin{document}
\MyDate{Mon.}\lipsum[1]
\end{document}