如何标记列表/使列表前的一行与列表相符?

如何标记列表/使列表前的一行与列表相符?

我感到沮丧,因为无法以某种方式“标记”列表,使“标签”与列表保持一致,并且不会在它之前引入分页符(或分栏符)。

这里有一个平均能量损失

\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}}

\begin{document}
\lipsum[1-2]

Convenient Starting Professions\nobreak\nopagebreak\begin{itemize}[WviiTwoColumn]\nopagebreak%
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{itemize}

\end{document}

如果您查看它的渲染,您应该注意到我的“方便的起始职业”标签位于第 1 页,但列表本身位于第 2 页,尽管我拼命尝试阻止分页符。

(我正在使用 XeLaTeX。)

答案1

以下是避免整个对象出现分页符的一种方法:

\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}

\newcommand{\indexClass}[1]{\index{#1}}
\newcommand{\class}[1]{#1\indexClass{#1}}

\newenvironment{twocolumnitemize}[1]
 {%
  \par\noindent
  \begin{minipage}{\textwidth}
  \begin{multicols}{2}[#1]
  \raggedcolumns\RaggedRight
  \begin{itemize}
 }
 {%
  \end{itemize}
  \end{multicols}
  \end{minipage}
 }

\begin{document}
\lipsum[1-2]

\begin{twocolumnitemize}{Convenient Starting Professions}
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{twocolumnitemize}

\lipsum[2]

\end{document}

在此处输入图片描述

通过删除minipage,您只能在逐项列表中获得可能的分页符。

\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}

\newcommand{\indexClass}[1]{\index{#1}}
\newcommand{\class}[1]{#1\indexClass{#1}}

\newenvironment{twocolumnitemize}[1]
 {%
  \begin{multicols}{2}[#1]
  \raggedcolumns\RaggedRight
  \begin{itemize}
 }
 {%
  \end{itemize}
  \end{multicols}
 }

\begin{document}
\lipsum[1-2]

\begin{twocolumnitemize}{Convenient Starting Professions}
\item \class{Fighter}
\item \class{Thief}
\item \class{Ranger}
\item \class{Bishop}
\item \class{Ninja}
\end{twocolumnitemize}

\lipsum[2]

\end{document}

在此处输入图片描述

答案2

两个答案

1- 对于简短列表

使用\vtop盒子:

\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}}

\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}%
}

\end{document}

在此处输入图片描述

1- 对于长列表

根据 OP 所述,很长的列表需要分页。这使用包longtable

\documentclass[12pt]{article}
\usepackage{longtable}
\usepackage{enumitem}
\usepackage{lipsum}

\def\It{\textbullet\hskip.2in}

\makeatletter
\newcommand{\indexClass}[1]{\index{#1}}
\newcommand{\class}[1]{#1\indexClass{#1}}
\makeatother

\begin{document}
     \lipsum[1-2]
        \begin{longtable}[l]{llll}

            \caption*{\bfseries\hskip1in Convenient Starting Professions}\\
               \multicolumn{4}{l}

                        \endfirsthead

        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\
        \It \class{Fighter} & \It \class{Bishop}\\
        \It \class{Thief} & \It \class{Ninja}\\     
        \It \class{Ranger} & ~\\

        \end{longtable}

\end{document}

在此处输入图片描述

通过使用\phantom可以分隔列,例如:

\It Fighter \phantom{\hskip2in} & \It Bishop\\

(仅适用于第一个条目)产生:

在此处输入图片描述

为了在项之间留出更多空间,\strut可以将 a 添加到 的定义中\It\def\It{\textbullet\hskip.2in{\Large\strut}}得到:

在此处输入图片描述

相关内容