允许使用 \the\year 进行代数运算

允许使用 \the\year 进行代数运算

我有一个相对频繁重复的家庭作业问题,并且我正在尝试更新解决方案以适应动态。

假设z(t)是一个周期为 3 的周期函数。求值z(\the\year)

\begin{array}{c||c|c|c|c|c|c}
    t   &0 & 1 & 2 & 3 & \dotsb & \the\year\\
    \hline
    z(t)    &12 & 5\pi & -6 & 12 & \dotsb & ??
\end{array}

是否有任何巧妙的编码可用于自动计算\the\yearmod3 和\ifthenelse结果?

答案1

如果您乐意输出-1而不是2,那么您可以使用 TeX 原语。

\documentclass{article}
\newcommand\modcomp[2]{\the\numexpr #1 - (#1/#2)*#2\relax}

\begin{document}
10 mod 3 is \modcomp{10}{3}. 11 mod 3 is \modcomp{11}{3}.  

\the\year\ mod 7 is \modcomp{\the\year}{7}
\end{document}

在此处输入图片描述


如果你坚持非负输出,TeX 基元\divide ... by会截断而不是舍入,因此你可以这样做

\documentclass{article}
\newcount\b
\newcount\n
\newcommand\modcomp[2]{\n=#1 \b=#2 \divide\n by \b \multiply\n by \b \the\numexpr#1 - \number\n\relax}

\begin{document}
10 mod 3 is \modcomp{10}{3}. 11 mod 3 is \modcomp{11}{3}.  

\the\year\ mod 7 is \modcomp{\the\year}{7}
\end{document}

答案2

如果您愿意并且能够使用 LuaLaTeX(而不是 pdfLaTeX 或 XeLaTeX),您可以对 执行模除法\the\year

在此处输入图片描述

% !TEX TS-program = lualatex
\documentclass{article}

\usepackage{luacode} % for '\luaexec' macro
% helper macro '\modulo' invokes Lua to perform the actual job
\newcommand\modulo[2]{\luaexec{tex.sprint(#1 \% #2)}}

\begin{document}
\the\year, \modulo{\the\year}{3}
\end{document}

相关内容