请参阅下面的代码。
用户给出一些数字对。每次它们也会被显示出来。
最后以特定的方式将它们加起来。
\documentclass{article}
%\def\Result...
\newcount{\A}\A=0
\newcount{\B}\B=0
\newcount{\C}\C=0
\def\XYZ{#1,#2}{\textbf{#1}---\textbf{#2}\A=#1\B=#2\multiply\A by 100\advance\C by \A\advance\C by \B}
\begin{document}
\XYZ{4,30}
\XYZ{7,30}
\XYZ{9,40}
%\Result
\end{document}
此类代码会阻止文档编译。
- 它有什么问题?如何修复?
- 可以使用
\newcounter
、、和其他 LaTeX 方法重写它\setcounter
吗\countainedwithin*
?我有兴趣了解实现结果的正确 TeX 和 LaTeX 方法。 - 如何编写一个宏
\Result
,将 \C 除以 100,如果结果为三位数 EFG,则写入 \textbf{E},\textbf{FG},如果结果为四位数 EFGH,则写入 \textbf{EF},\textbf{GH}? - 如果少于三位数,则为 G 添加 0 或为 FG 添加 00,并使用三位数。
顺便说一句,我正在寻找不涉及 calc 包的东西。在 \Result 中将结果四舍五入到最接近的 FG 或 GH 也是可以的。
为了\Result
\def\Result{\divide\C by 100\textbf{\the\C}}
现在可以工作了 - 但现在确定如何处理 EF.GH 中向上舍入到最接近的 H。
如果它确实有效,不确定如何处理小数部分并在分隔标记的每一边截断为最多两位数字。
答案1
完全不清楚你想要什么计算或输出,所以我修复了语法错误,离开了计算,然后让它排版 AB 和 C 的值
\documentclass{article}
%\def\Result...
\newcount{\A}\A=0
\newcount{\B}\B=0
\newcount{\C}\C=0
\def\XYZ#1{\XYZa#1\relax}
\def\XYZa#1,#2\relax{\textbf{#1}:\textbf{#2}%
\A=#1\relax
\B=#2\relax
\multiply\A by 100\relax
\advance\C by \A
\advance\C by \B
[\the\A,\the\B,\the\C]%
}
\begin{document}
\XYZ{4,30}
\XYZ{7,30}
\XYZ{9,40}
%\Result
\end{document}