LyX 直观地使用 Tab 键支持嵌套环境(例如begin{itemize}...\item...
)。我希望让其适用于带有 Exam 类的布局中的问题。
Exam 将问题嵌套在以下类似条目的环境中:问题、部分、子部分、子子部分。LyX 中的问题在于 LyX 中的 Tab 键会重新创建(嵌套)相同的环境。用户必须同时使用 Tab 键(更改嵌套级别)和更改段落样式(例如,按下 Tab 键后,问题 -> 部分)。
由于 LyX 设置为在环境名称相同时直观地嵌套,因此我想到了一个想法,即在布局中只编码一种段落样式,例如myquestions
带有\item
\myquestion
LyX 可以轻松创建具有以下功能的 LaTeX 文件:
\begin{myquestions}
\myquestion[4] What is 2 + 2?
\myquestion Answer each of the following as best you can.
\begin{myquestions}
\myquestion[2] What's the meaning of life.
\myquestion[2] How old are you.
\end{myquestions}
\end{myquestions}
我遇到的问题是如何将上述内容转换为 Exam 所期望的内容。即:
\begin{questions}
\question[4] What is 2 + 2?
\question Answer each of the following as best you can.
\begin{parts}
\part[2] What's the meaning of life.
\part[2] How old are you.
\end{parts}
\end{questions}
我可以根据当前环境设法将重写\myquestion
为适当的\question
或\part
项目(有点,因为它似乎总是相同的,例如,myquestions
)。 似乎编码需要知道嵌套的级别。命令行为取决于当前环境例如,看起来很有用。
第二个问题让我完全不知所措:如何转换环境名称(\begin{myquestions}
->\begin{questions}
或\begin{parts}
取决于嵌套级别)。这超出了我编写 LaTeX 的能力,而且我在 TSE 上找不到任何东西。
编辑:感谢这里的帮助,我得到了我的LyX 考试文档类别布局工作(并记录)。
答案1
以下是我的幼稚做法:
\documentclass{exam}
\newcounter{mydepth}%
\newcommand{\myenvironmentname}{%
\ifnum\value{mydepth}=0notinquestion\fi%
\ifnum\value{mydepth}=1question\fi%
\ifnum\value{mydepth}=2part\fi%
\ifnum\value{mydepth}=3subpart\fi%
\ifnum\value{mydepth}=4subsubpart\fi%
\ifnum\value{mydepth}>4undefinedquestion\fi%
}%
\newcommand{\myquestion}{\csname \myenvironmentname\endcsname}%
\newenvironment{myquestions}%
{\stepcounter{mydepth}\begin{\myenvironmentname s}}%
{\end{\myenvironmentname s}\addtocounter{mydepth}{-1}}%
\begin{document}
\begin{myquestions}
\myquestion[4] What is 2 + 2?
\myquestion Answer each of the following as best you can.
\begin{myquestions}
\myquestion[2] What's the meaning of life.
\myquestion[2] How old are you.
\end{myquestions}
\end{myquestions}
\end{document}