我正在尝试编写一个自定义的目录,假设每行有三个值,并显示在两列中,如下所示:
我知道最好的选择是使用表格来对齐值。但是,使用表格,我似乎无法将目录分成两列(如上例所示)。
或者我可以制作一个六列表格,但我必须手动管理分栏符和最终的分页符。
有什么推荐吗?
以下是启动代码:
\documentclass{article}
\usepackage{multicol}
\usepackage{tabularx}
\setlength{\columnseprule}{0.4pt}
\begin{document}
\begin{multicols}{2}
\begin{tabularx}{\columnwidth}{rXr}
\textbf{p} & \textbf{title} & \textbf{date} \\
1 & Introduction & 01/01 \\
22 & Methodology & 01/15 \\
333 & Results & 02/01 \\
4 & Conclusion & 02/15 \\
5 & Discussion & 03/01 \\
6 & Appendix A & 03/15 \\
7 & Appendix B & 04/01 \\
8 & Bibliography & 04/15 \\
\end{tabularx}
\end{multicols}
\end{document}
答案1
我设计了一些东西。我实际上只需要表格来保持三个元素对齐,因此我编写了一个命令来在它们之间插入适当的间距。
\documentclass{article}
\usepackage{multicol}
\setlength{\columnseprule}{0.4pt} % Column separator rule
\setlength{\columnsep}{2em} % Distance between columns
\newlength{\maxspace}
\newlength{\negspace}
\newcommand{\tocline}[3]
{
\settowidth{\maxspace}{999} % Get the width of the wider element in the first column
\settowidth{\negspace}{#1} % Get width of current element in the first column
\noindent
\hspace{\maxspace}\hspace{-1\negspace} % Advance by the maximum width possible minus the current width
#1 % Insert first element
\hspace{0.5em} % Advance by a fixed amount
#2 % Insert second element
\hfill % Place the third element in the far right
#3\par % Insert third element and end paragraph
}
\begin{document}
\begin{multicols}{2}
\tocline{p}{title}{date}
\tocline{1}{Introduction}{01/01}
\tocline{22}{Methodology}{01/01}
\tocline{333}{Results}{01/01}
\tocline{4}{Conclusion}{01/01}
\tocline{6}{Appendix}{01/01}
\end{multicols}
\end{document}
结果: