LaTeX 抽认卡问题

LaTeX 抽认卡问题

我使用一个制作抽认卡的软件包,其格式为\card{#1}{#2},其中#1#2代表正面和反面。这个软件包很好用。

我喜欢遮挡文本,因此我创建了新命令\frontcard,它使用突出显示或下划线遮挡文本并使文本变白,以及\backcard,这本质上是一个替代 frontcard 的虚拟命令。例如,我必须写\card{The chancellor of Germany is \frontcard{Angela Merkel}}{The chancellor of Germany is \backcard{Angela Merkel}}

\documentclass[frontgrid]{flacards}
\usepackage{color}

\newcommand{\frontcard}[1]{\textcolor{yellow}{\colorbox{yellow}{$#1$}}}
\newcommand{\backcard}[1]{#1} 

\begin{document}

\pagesetup{2}{4} 


\card{The chancellor of \frontcard{Germany} is \frontcard{Angela Merkel}. }{The chancellor of \backcard{Germany} is \backcard{Angela Merkel}. }

\end{document} 

我想将 2 个新命令减少为 1 个命令,因为编写 2 个命令有点多余。

不过,我想不出一个简单的方法来做到这一点,因为空白字段的数量是任意的(2 个或更多)。所以像这样:

\newcard{The chancellor of \blank{Germany} is \blank{Angela Merkel}}

我在想如何实现这一点;也许使用ifthen包或etoolbox包?所以,如果我在,#1就执行这个命令,如果我在,#2就执行另一个命令。但是我不知道如何具体实现这一点。有什么建议吗?

答案1

像这样:

\documentclass[frontgrid]{flacards}
\usepackage{color}

\newcommand{\frontcard}[1]{\textcolor{yellow}{\colorbox{yellow}{$#1$}}}
\newcommand{\backcard}[1]{#1} 

% new:
\newcommand{\Card}[1]{% create new command for cards with blanks
    \card{% call the original \card command with twice the same argument (#1)
        \let\blank\frontcard% but let \blank behave like \frontcard the first time
        #1
    }{%
        \let\blank\backcard% and like \backcard the second time
        #1
    }%
}

\begin{document}

\pagesetup{2}{4} 


\card{The chancellor of \frontcard{Germany} is \frontcard{Angela Merkel}. }{The chancellor of \backcard{Germany} is \backcard{Angela Merkel}. }

\Card{The ``Altkanzler'' of \blank{Germany} is \blank{Helmut Kohl}. }

\end{document}

请注意,我在定义中使用\frontcard\backcard\Card


也有方法可以通过\if构造甚至ifthen包来实现这一点,但我认为这有点矫枉过正。以上是我能想到的最简单的解决方案,除了可以将\frontcard和的定义放在\backcard定义中\Card

相关内容