![尝试将小时:分钟转换为分钟](https://linux22.com/image/300425/%E5%B0%9D%E8%AF%95%E5%B0%86%E5%B0%8F%E6%97%B6%EF%BC%9A%E5%88%86%E9%92%9F%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%88%86%E9%92%9F.png)
我在尝试将时间格式从“小时:分钟” (例如 12:05) 转换为 12*60+5 = 725 时遇到了一些麻烦,也就是说,我想使用 725 作为分钟数。我已经使用分钟数来设置计数器,但是当我尝试转换字符串然后设置计数器时,我得到了看似不相关的错误。
我尝试使用以下代码,它可以自行运行,但似乎不允许我设置计数器。
\newcommand\LessonStartTimeMins[1]{\splithour#1!}
\def\splithour#1:#2!{\FPupn\result{60 #1 * #2 +}\FPround\result\result{0}\result }
基本上我只是想根据时间格式设置一个计数器,我宁愿使用
\begin{lesson}{The Earth (Fri 24/10/2014, 12:05PM)}{12:05}{70}{Earth}{Activities Not displayed}{text Book}{ % Lesson Objectives
比
\begin{lesson}{The Earth (Fri 24/10/2014, 12:05PM)}{725}{70}{Earth}{Activities Not displayed}{text Book}{ % Lesson Objectives
第二个参数设置计数器
\NewEnviron{lesson}[7]{%
\setcounter{LessonStartTime}{#2}%
当我尝试使用小时格式时,我使用以下
\NewEnviron{lesson}[7]{%
\setcounter{LessonStartTime}{\LessonStartTimeMins{#2}}%
我收到的错误显示如下。
Runaway argument?
725!\relax \newpage \myLandscapeGeom \begin {landscape} \addtocounter \ETC.
! Paragraph ended before \splithour was complete.
<to be read again>
\par
l.153 \end{singleLesson}
感谢任何人提供的帮助。
答案1
您不需要fp
,因为这只是整数算术。
\def\splithour#1:#2!{%
\setcounter{LessonStartTime}{\numexpr 60*#1+#2\relax}%
}
但“直接”执行操作更容易:
\documentclass{article}
\usepackage{environ}
\newcounter{LessonStartTime}
\NewEnviron{lesson}[7]{%
\setcounter{LessonStartTime}{\expandafter\numexpr\splithour#2!\relax}%
#1 --- \theLessonStartTime
}
\def\splithour#1:#2!{60*#1+#2}
\begin{document}
\begin{lesson}
{The Earth (Fri 24/10/2014, 12:05PM)}
{12:05}
{70}
{Earth}
{Activities Not displayed}
{text Book}
{lesson objectives}
\end{lesson}
\begin{lesson}
{The Moon (Fri 24/10/2014, 16:24PM)}
{16:24}
{70}
{Moon}
{Activities Not displayed}
{text Book}
{lesson objectives}
\end{lesson}
\end{document}
答案2
你应该先执行转换计算,然后传递\result
设置计数器。fp
计算不可扩展,从而导致问题。
这是一个简单的例子:
\documentclass{article}
\usepackage{environ}
\usepackage[nomessages]{fp}
\newcommand{\LessonStartTimeMins}[1]{\splithour#1!}
\def\splithour#1:#2!{\FPupn\result{60 #1 * #2 +}\FPround\result\result{0}}
\newcounter{LessonStartTime}
\NewEnviron{lesson}[7]{%
\LessonStartTimeMins{#2}% Stores result in \result
\setcounter{LessonStartTime}{\result}%
\result
}
\begin{document}
\LessonStartTimeMins{12:05}\result% 725
\setcounter{LessonStartTime}{725}\theLessonStartTime% 725
\setcounter{LessonStartTime}{\result}\theLessonStartTime% 725
\begin{lesson}
{The Earth (Fri 24/10/2014, 12:05PM)}
{12:06}% 726
{70}
{Earth}
{Activities Not displayed}
{text Book}
{lesson objectives}
\end{lesson}
\end{document}
725725725726