如何在 LaTeX 中计算编译时我的年龄?
就像是:
I'm \myage{day}{month}{year} years old.
将会非常棒。
答案1
datetime
您可以使用该包并进行一些简单的计算轻松排版您的年龄。
\documentclass{article}
\usepackage{datenumber,fp}
\begin{document}
\newcounter{dateone}%
\newcounter{datetwo}%
\setmydatenumber{dateone}{1990}{01}{01}%
\setmydatenumber{datetwo}{\the\year}{\the\month}{\the\day}%
\FPsub\result{\thedatetwo}{\thedateone}
\FPdiv\myage{\result}{365.2425}
\myage
\end{document}
您可以正确截断数字,即,如果您 21.6 岁,它将为您提供 21(参见编辑),方法是将代码的最后一行更改为如下形式:
\FPround\myage{\myage}{0}\myage\ years old
另请参阅邮政。
编辑
由于年龄的四舍五入引起了一些评论,我查阅了年龄的法律定义(这可能适合我的例子)。基于此,我将代码从 改为FPround
。FPtrunc
感谢所有发表评论的人。我还将一年中的天数改为 365.2425,以稍微提高边缘情况的准确性!
答案2
提出的解决方案似乎并不完全准确;也许更直接的方法是(用实际数字替换 DDMMYYYY)
\usepackage{ifthen}
\newcounter{myage}
\setcounter{myage}{\the\year}
\addtocounter{myage}{-YYYY}
\ifthenelse{\the\month<MM}{\addtocounter{myage}{-1}}{}
\ifthenelse{\the\month=MM}{
\ifthenelse{\the\day < DD}{\addtocounter{myage}{-1}}{}
}{}
然后\themyage{}
可以用来显示你的年龄。
答案3
我发现这个效果非常好。
%
\catcode`@=11
\newcount\@tempnuma
\def\@null{null}
\def\age#1{\@age#1\@null}
\def\@age#1/#2/#3\@null{%
\@tempnuma\year
\advance\@tempnuma by -1900 % Comment this line out for dates of
% the form 2/24/1967 - last 2 digits of yr.
\advance\@tempnuma by -#3\relax % gives # of years
%\number\@tempnuma
\ifnum#1 > \month %anniv month is later in year
\advance\@tempnuma by -1\relax
\else
\ifnum#1 = \month %anniv month is this month
\ifnum#2 > \day %anniv day is later in month
\advance\@tempnuma by -1\relax
\fi\relax
\fi\relax
\fi\relax
\number\@tempnuma}
\catcode`@=12
%
用法是:\age{6/25/84} 可得出正确的年龄(以年为单位),这正是人们通常想要的。稍加调整,即可得出月份和日期。
答案4
\usepackage{datenumber, fp}
\newcounter{birthday}
\setmydatenumber{birthday}{1995}{09}{06} % my birthday
\setdatetoday
\addtocounter{datenumber}{-\thebirthday} % today - birthday
\setdatebynumber{\thedatenumber} % get date
\FPsub\result{\thedateyear}{\thestartyear} % date year - start year (see datenumber lib doc)
\FPtrunc\myage{\result}{0} %truncate result
I am \myage years old.