列表的文档类

列表的文档类

我希望创建一个列表,其中列表中的每个项目都包含一个标题,后跟作者/姓名。

显然,我可以使用任何类型的基本文档类(想到文章或论文)轻松地做到这一点,但我想知道是否存在专门用于列表的特定文档类。

答案1

这是一个您可以构建的简单解决方案。您可以使用 来\parbox表示作者和标题。通过指定所有 parbox 的宽度相同,它们将像在表格中一样对齐。(编辑您也可以使用表格:见下文。)

长度没有限制,因为每个\work条目都被视为一个段落,TeX 会根据需要在它们之间进行分隔。您可以通过更改\parskip(例如\usepackage{parskip})来控制条目之间的间距。

您还可以为姓氏和名字制作单独的框,或应用其他样式(例如,所有姓氏都以粗体显示)。

\documentclass{article}

\newlength{\authorwidth}
\newlength{\titlewidth}
\setlength{\authorwidth}{0.25\linewidth} % adjust as desired
\setlength{\titlewidth}{0.25\linewidth}

\newcommand{\work}[2]{%
    \noindent
    \parbox[t]{\authorwidth}{#1}%
    \parbox[t]{\titlewidth}{\emph{#2}}\par%
}

\begin{document}
\work{John Doe}{Big Book}
\work{Jane Doe}{Bigger Book}
\work{Jim Doe}{Small Book}
\work{John Doe}{Big Book}
\work{Jane Doe}{Bigger Book}
\work{Jim Doe}{Small Book}
\work{John Doe}{Big Book}
\work{Jane Doe}{Bigger Book}
\work{Jim Doe}{Small Book}
\work{John Doe}{Big Book}
\work{Jane Doe}{Bigger Book}
\work{Jim Doe}{Small Book}

\end{document}

在此处输入图片描述

编辑

为了进行更多自定义,请定义一个通用命令来设置框,然后使用该命令来制作具有格式的特定命令。

\newcommand{\pair}[2]{%
    \noindent
    \parbox[t]{\authorwidth}{#1}%
    \parbox[t]{\titlewidth}{#2}\par%
}
\newcommand{\pairHeader}[2]{%
    \pair{\textbf{#1}}{\textbf{#2}}\smallskip%
}
\newcommand{\work}[2]{%
    \pair{#1}{\emph{#2}}%
}

\begin{document}

\pairHeader{Author}{Title}
\work{John Doe}{Big Book}
...

@egreg 是对的,如果框超过一行,那么框后面就没有足够的空间,除非你像他演示的那样手动修复间距。但也许这不是问题。


编辑 2:表格版本

要解决对齐问题,您可以不使用 parbox,而是为每行使用单行表格环境。tabularx您只需指定第一列的宽度。不过,这会产生“Underfull \hbox”警告。

\documentclass{article}
\usepackage{tabularx}
\newlength{\authorwidth}
\setlength{\authorwidth}{0.5\linewidth} % adjust as desired

\newcommand{\pair}[2]{%
    \noindent
    \begin{tabularx}{\linewidth}{p{\authorwidth} X}
    #1 & #2\\
    \end{tabularx}\par%
}
\newcommand{\pairHeader}[2]{%
    \pair{\textbf{#1}}{\textbf{#2}}\smallskip%
}
\newcommand{\work}[2]{%
    \pair{#1}{\emph{#2}}%
}

\begin{document}

\pairHeader{Author}{Title}

\work{John Doe}{Big Book}
\work{Jane Doe}{Bigger Book}
\work{Jim Doe}{Small Book}
\work{Jane Doe}{Bigger Book with a long title that will use two lines}
\work{Charles Louis Xavier~Joseph de~la Vall\'ee~Poussin}{Small Book}
\work{Adalbert Uthor}{All about authors}                          

\end{document}

在此处输入图片描述

答案2

对于这样的应用程序,我不会使用longtable;只使用框来处理长标题(或名字很长的作者)。

然而,为了获得正确且均匀的垂直间距,需要一些技巧(见如何在使用 minipages (或 \parboxes) 时保持恒定的 baselineskip?

\documentclass{article}

\newlength{\authorwidth}
\newlength{\titlewidth}
\setlength{\authorwidth}{0.3\columnwidth} % adjust as desired
\setlength{\titlewidth}{0.6\columnwidth} % adjust as desired

\newcommand{\work}[2]{%
  \noindent
  \parbox[t]{\titlewidth}{%
    \raggedright\itshape#2\par
    \xdef\titledepth{\the\prevdepth}%
    \xdef\titlelines{\the\prevgraf}%
  }%
  \hspace{\dimexpr\columnwidth-\titlewidth-\authorwidth}%
  \parbox[t]{\authorwidth}{%
    \raggedright#1\par
    \xdef\authordepth{\the\prevdepth}%
    \xdef\authorlines{\the\prevgraf}%
  }%
  \par
  \prevdepth=\ifnum\authorlines>\titlelines\space\authordepth\else\titledepth\fi
  \medskip
}

\begin{document}
\work{John Doe}{Big Book}
\work{Jane Doe}{Bigger Book with a long title that will use two lines}
\work{Charles Louis Xavier~Joseph de~la Vall\'ee~Poussin}{Small Book}
\work{Adalbert Uthor}{All about authors}
\end{document}

使用\work宏可以将输入和格式化分开;可以在定义中随意更改格式\work

(我显然受到了安德鲁·卡什纳 (Andrew Cashner) 的回答的启发,但做了一些改进和改变。)

在此处输入图片描述

设置标题和作者姓名后,我保存了最后一行的深度和行数,以便在设置框后使用以获得均匀的间距。标题或作者姓名中的强制新行应该用 标记\\,而不是用空行标记。

答案3

我非常怀疑是否存在 LaTeX文档类那里有你感兴趣的列表类型。我必须承认,我完全不知道 LaTeX包裹它只起到这个作用 — — 仅此而已。

无论如何,设置一个longtable环境来做你感兴趣的事并不困难。一个longtable可以跨越很多页。通过p对两列使用(修改后的)列类型,如果标题和名称的长度超出分配的列宽,它们将自动换行。您可以随意微调列的宽度和标题中提供的信息。

\documentclass{article}
\usepackage{longtable} % for 'longtable' environment
\usepackage{booktabs}  % for \midrule and \bottomrule macros
\usepackage{array}     % for \newcolumntype and \extrarowheight macros
\usepackage{ragged2e}  % for \RaggedRight macro
\newcolumntype{P}[1]{>{\RaggedRight\arraybackslash}p{#1}}
\setlength\extrarowheight{1ex}   % provide a bit more space between entries
\usepackage{lipsum}    % for filler text

\begin{document}
\begin{longtable}{@{} P{0.4\textwidth} @{\hspace{0.05\textwidth}} P{0.55\textwidth} @{}}
Title & Author's name\\ \midrule \endhead
\bottomrule \endlastfoot
x & y\\
x & y\\
\lipsum*[2] & \lipsum*[3]\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
x & y\\
\end{longtable}
\end{document}

相关内容