在尝试回答“如何标记列表/使列表前的一行与列表相符?”我使用一个\vtop
框来包含包括标签在内的整个列表。然后,为了改进我的答案,我尝试使用\newenvironment
我称为的将解决方案放置在其自己的环境中Imyz
。这没有奏效,日志包含两个错误消息:
错误1:Something's wrong--perhaps a missing \item.
错误2:Lonely \item--perhaps a missing list environment.
代码:
\documentclass[12pt]{article}
\usepackage[a5paper]{geometry}
\usepackage{fontspec}
\usepackage{microtype}
\usepackage{multicol}
\usepackage[defaultlines=2,all]{nowidow}
\usepackage{ragged2e}
\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{parskip}
\tolerance=1000
\makeatletter
\newcommand{\indexClass}[1]{\index{#1}}
\newcommand{\class}[1]{#1\indexClass{#1}}
\makeatother
\newcommand{\WviiTwoColumnSetup}{\raggedcolumns\RaggedRight}
\SetEnumitemKey{WviiTwoColumn}{%
before=\begin{multicols}{2}\WviiTwoColumnSetup,
after=\end{multicols}}
\newenvironment{Imyz}[1]{%
\vtop{%
#1%
\begin{itemize}[ WviiTwoColumn]}%
{\end{itemize}}%
}
\begin{document}
\lipsum[1-2]
\vtop{%
Convenient Starting Professions%
\begin{itemize}[WviiTwoColumn]%
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{itemize}%
}
\begin{Imyz}{Convenient Starting Professions}
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{Imyz}
\end{document}
输出:
从输出和错误中可以明显看出,我的新环境无法itemize
使用添加的\vtop
包含标签的框来启动和结束环境。任何帮助和任何解释为什么这不起作用都将不胜感激。
答案1
您\vtop
在“开始”部分启动和结束,因此\begin{itemize}
在检查环境内容之前就执行并且框结束。
TeX 允许以 开始一个框\bgroup
并以 结束\egroup
。
\documentclass[12pt]{article}
\usepackage[a5paper]{geometry}
\usepackage{microtype}
\usepackage{multicol}
\usepackage[defaultlines=2,all]{nowidow}
\usepackage{ragged2e}
\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{parskip}
\newcommand{\WviiTwoColumnSetup}{\raggedcolumns\RaggedRight}
\SetEnumitemKey{WviiTwoColumn}{%
before=\begin{multicols}{2}\WviiTwoColumnSetup,
after=\vfill\end{multicols}}
\newenvironment{Imyz}[1]
{\vtop\bgroup #1%
\begin{itemize}[WviiTwoColumn]}
{\end{itemize}\egroup}
\newcommand{\indexClass}[1]{\index{#1}}
\newcommand{\class}[1]{#1\indexClass{#1}}
\begin{document}
\lipsum[2]
\vtop{%
Convenient Starting Professions%
\begin{itemize}[WviiTwoColumn]%
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{itemize}%
}
\begin{Imyz}{Convenient Starting Professions}
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{Imyz}
\end{document}