规范嵌套环境以实现更清晰的设计(LyX)

规范嵌套环境以实现更清晰的设计(LyX)

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}

相关内容