@egreg 很好地回答了我的问题在本地为项目添加星号通过引入命令\moditem
。我想知道这是否可以用于multienum
包中的特定项目。这是我目前所拥有的:
\documentclass[letterpaper]{article}
\usepackage{multienum}
\begin{document}
\begin{multienumerate}
{\renewcommand{\labelname}{\llap{*}\csname
labelenum\romannumeral\themultienumdepth\endcsname}
\mitemx{one}
\mitemxx{two}{three}}
\mitemxx{four}{five}
\end{multienumerate}
\end{document}
我发现的问题是,没有multienum
单独定义每个项目,例如\mitemxx{<content>}{<content>}
。例如,如果我想在第 3 项上加一个星号,至少对我来说有点困难。本质上,我希望能够以两种不同的方式放置星号:
\mitemax{<content with asterisk>}{<content without asterisk>}
类似这样的命令a
,使得 出现在的位置就是 出现在的位置。这样\mitemxa
就定义了不同的场景。当然,我认为这很难,因为您可能需要为\mitemx
、\mitemxx
、\mitemxxx
、\mitemxxxx
、的所有场景创建多个自定义命令\mitemxxxxx
。- 简单来说,就是一个命令,
\astmitem
在本地重新定义标签。例如,\mitemxx{\astitem <content>}{<content>}
将在第一项前面放置一个星号。这比较简单,但我搞不懂。
更新
@cgnieder 提供的答案非常好,但是当我做类似的事情时:
\newcommand*\doexercise[1][\includegraphics[scale=0.125]{g3016}]{%
\gdef\labelname{%
\llap{#1}%
\csname labelenum\romannumeral\themultienumdepth\endcsname
\gdef\labelname{%
\csname labelenum\romannumeral\themultienumdepth\endcsname}%
}}
它不起作用。为什么?图形文件可以用任何符号替换。如果用 替换,效果\includegraphics[scale=0.125]{g3016}
很好*
。
\includegraphics[scale=0.125]{g3016}
通过将 替换为 来解决{\includegraphics[scale=0.125]{g3016}}
。你可以阅读] 位于可选参数内有关修复的更多信息。
答案1
\starnext
以下是一个重新定义命令的想法\labelname
,该命令在调用时会自行恢复。这几乎为您提供了您在问题中概述的语法:
\documentclass{article}
\usepackage{multienum}
\newcommand*\starnext{%
\gdef\labelname{%
\llap{*}%
\csname labelenum\romannumeral\themultienumdepth\endcsname
\gdef\labelname{%
\csname labelenum\romannumeral\themultienumdepth\endcsname}%
}}
\begin{document}
\begin{multienumerate}
\mitemx{one\starnext}
\mitemxx{two}{three}
\mitemxx{four\starnext}{five}
\end{multienumerate}
\begin{multienumerate}\starnext
\mitemx{one}
\mitemxx{two}{three\starnext}
\mitemxx{four}{five}
\end{multienumerate}
\end{document}