我正在尝试创建一个如下所示的奇特日期格式:
以下是我目前所拥有的 MWE。出于某种原因,我似乎无法获得正确的高度。
\documentclass[letterpaper]{article}
\usepackage{graphicx}
\usepackage{datetime}
\usepackage{calc}
\newlength{\dateboxheight}
\setlength{\dateboxheight}{%
\heightof{%
\parbox[b]{3em}{%
May\\ %
2014%
}
}
}
\newdateformat{squaredate}{%
\mbox{%
\resizebox{\dateboxheight}{!}{\THEDAY}~%
\parbox[b]{3em}{%
\monthname[\THEMONTH]\\ %
\THEYEAR%
}}}
\begin{document}
\squaredate\today
\end{document}
欢迎提出任何建议或改进。我知道这可以在 TikZ 中实现;因此,我认为这是一个可能的解决方案。其他值得欢迎的改进可能是其他月份(如 11 月)可以缩短,以便它们具有与 5 月相同的宽度;即 11 月。可能是一个\ifelse
案例?
答案1
您在 中提供了错误的高度/宽度尺寸\resizebox
。这是适当的界面:\resizebox{<width>}{<height>}{<stuff>}
,因此您应该使用
%...
\resizebox{!}{\dateboxheight}{\THEDAY}~%
%...
这里还有一些其他的工作要做:
\documentclass{article}
\usepackage{graphicx,datetime}
\usepackage[table]{xcolor}
\colorlet{datecolor}{black!40}
\colorlet{datebackground}{black!10}
\newdateformat{squaredate}{{%
\renewcommand{\arraystretch}{1.2}%
\begin{tabular}{rl}
\cellcolor{datebackground} & \cellcolor{datebackground}\color{datecolor}\monthname[\THEMONTH] \\ %
\cellcolor{datebackground}\smash{\color{datecolor}\resizebox{2.5\normalbaselineskip}{!}{\sffamily\THEDAY}} &
\cellcolor{datebackground}\color{datecolor}\THEYEAR
\end{tabular}
}}
\begin{document}
\squaredate\today
\end{document}
答案2
我认为这样就可以了。我已经用它tikz
来实现目标了。以下是代码:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{anyfontsize}
\newcommand{\squaredate}[3]{%
\begin{tikzpicture}
\filldraw[color=lightgray] (-.1,-7) rectangle (-4.5,-5);
\draw (-3.5,-6) node {\fontsize{50}{60}\selectfont\bfseries #1}; %%the two arguments to \fontsize are the actual font size and the size of the baseline-skip. The baseline-skip should be set to roughly 1.2x the font size.
\draw (-1.3,-5.5) node {\LARGE\bfseries #2};
\draw (-2.5,-6) -- (-0.2,-6);
\draw (-1.4,-6.5) node {\LARGE\bfseries #3};
\end{tikzpicture}
}%
\begin{document}
\squaredate{20}{May}{2014}
\end{document}
我定义了一个新命令squaredate
。它需要 3 个参数。日期、月份和年份。并按要求显示。
输出如下: