如何简化自定义任务命令?

如何简化自定义任务命令?

我在排版试卷答案的时候,想用一个fontawesome标志来标记题目的正确选项,于是我用task包和fontawesome5包排版出了下面的内容

\begin{tasks}(2)
    \task The choice A
    \task[\faIcon{check-square}.] The choice B
    \addtocounter{task}{1}
    \task The choice C
    \task The choice D
\end{tasks}

看起来有点麻烦,所以想创建一个可以快速实现效果的新命令

\def\true{\task[\faIcon{check-square}.]}

然后我使用该true命令,它返回了以下错误

Undefined control sequence.
\true ->\task

我也尝试过使用hook

\AtBeginEnvironment{tasks}{\def\true{\task[\faIcon{check-square}.]}}

但是,它不起作用。那么,我该如何实现这个效果呢?

完整的 MWE 如下

\documentclass{article}

\usepackage{tasks,fontawesome5}
\settasks{label=\Alph*.}
\begin{document}

\def\true{\task[\faIcon{check-square}.]}

\begin{tasks}(2)
    \task The choice A
    \task[\faIcon{check-square}.] The choice B
    \addtocounter{task}{1}
    \task The choice C
    \task The choice D
\end{tasks}

The simplified code I'd like is
\begin{verbatim}
    \begin{tasks}(2)
        \task The choice A
        \true The choice B
        \task The choice C
        \task The choice D
    \end{tasks}
\end{verbatim}

\end{document}

效果

答案1

抱歉,如果不对包代码进行大修,它就无法工作。问题是包代码使用文字\task将输入拆分为项目。因此您的\true命令不会创建新项目,从而导致混乱。

我能提供的最好的是诸如的语法\task[\true],因此您可以\true根据自己的喜好进行定义。

\documentclass{article}

\usepackage{tasks,fontawesome5}
\settasks{label=\Alph*.}

\newcommand\true{%
  \addtocounter{task}{1}%
  \ifinstructor\makebox[0pt][r]{\faIcon{check-square} }\fi
  \thetask
}
\newif\ifinstructor % starts false

\begin{document}

\begin{tasks}(2)
    \task The choice A
    \task[\true] The choice B
    \task The choice C
    \task The choice D
\end{tasks}

\instructortrue

\begin{tasks}(2)
    \task The choice A
    \task[\true] The choice B
    \task The choice C
    \task The choice D
\end{tasks}

\end{document}

当然,\instructortrue如果你想打印解决方案密钥,你需要在开始文档时进行设置。这里我使用相同的环境作为示例。

在此处输入图片描述

相关内容