灵活的网格布局来列出地址

灵活的网格布局来列出地址

我已经使用 LaTeX 排版我的简历好几年了,但一直有一个困扰我的问题,我从来没有能够完全解决。

我的简历的最后一部分总是推荐人列表。随着我的资历越来越高,我不得不将列出的 3-5 个推荐人的布局调整为单列、2 列或 3 列,具体取决于我剩余的空间大小,以确保紧凑。

一个简单的模型来展示我的意思:

在此处输入图片描述

现在我不再每天更新/发送简历(最多可能一年一次),所以我已经习惯了手动调整间距和使用表格。然而,这不是我喜欢或特别优雅的解决方案。

我的问题是——是否可以根据给定的尺寸即时创建网格?例如,我希望能够做到:

\begin{refList}[2]
    \refItem{
        John Smith\\
        Department of Foo\\
        Quxington University\\
        [email protected]
     }

    \refItem{...}
\end{refList}

其中参考文献只是作为“项目”给出的,我可以通过更改[2]为其他内容来选择要使用多少列(等宽)(行数由refItems 的数量和列数自动确定)。无需检查项目是否适合列,因为我显然不会像[5]我的简历那样使用疯狂的数字,这会挤压/溢出/截断条目。

虽然我认为这样的系统会很好,但我不知道从哪里开始(或者是否有 CTAN 包已经可以做到这一点;快速搜索没有发现任何东西)。我正在寻找有关实现这个/有用的包/等的建议和帮助。

答案1

这没什么特别的,但是允许灵活的refList环境自动\refItem在一行上留出 s 的空格:

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\newcommand{\refItem}[2][l]{% \refItem[<align>]{<reference>}
  \begin{tabular}[t]{@{}#1@{}}#2\end{tabular}\hfill}
\newcommand{\email}[1]{% \email{<email>}
  \href{mailto:#1}{\ttfamily #1}}%
\newenvironment{refList}
  {\null\hfill}
  {\null\par}
\begin{document}

\begin{refList}
  \refItem{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}}
  \refItem{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}}
  \refItem{Jack B.\ Nimble \\ Department of Bar \\ Quxington University \\ \email{[email protected]}}
\end{refList}
\bigskip
\begin{refList}
  \refItem[c]{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}}
  \refItem[r]{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}}
\end{refList}
\bigskip
\begin{refList}
  \refItem{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}}
  \refItem{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}}
  \refItem{Jack B.\ Nimble \\ Department of Bar \\ Quxington University \\ \email{[email protected]}} \par\medskip\null\hfill
  \refItem{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}}
  \refItem{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}}
\end{refList}

\end{document}

\refItem[<align>]{<reference>}<reference>像常规的一样设置tabular,您可以在其中覆盖默认的left 对齐(无论是centred 还是right-aligned,如第二个refList)。如上面的 MWE 所示,您不需要指定列数。

\email{<email>}旨在使用传统方式指定电子邮件hyperref界面。当然,您可以hyperref根据自己的需要调整链接设置。请参阅hyperref文档了解详情。


这是一个替代解决方案,使用tabularx并要求用户输入以下列:

在此处输入图片描述

\documentclass{article}
\usepackage{hyperref,tabularx,array}% http://ctan.org/pkg/{hyperref,tabularx,array}
\newcommand{\refItem}[2][l]{% \refItem[<align>]{<reference>}
  \begin{tabular}[t]{@{}#1@{}}#2\end{tabular}\hfill}
\newcommand{\email}[1]{% \email{<email>}
  \href{mailto:#1}{\ttfamily #1}}%
\newenvironment{refList}[1]
  {\noindent\tabularx{\linewidth}{@{}*{#1}{>{\centering\arraybackslash}X@{}}}}% \begin{refList}
  {\endtabularx\par}% \end{refList}
\begin{document}

\begin{refList}{3}
  \refItem{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}} &
  \refItem{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}} &
  \refItem{Jack B.\ Nimble \\ Department of Bar \\ Quxington University \\ \email{[email protected]}}
\end{refList}
\bigskip
\begin{refList}{2}
  \refItem[c]{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}} &
  \refItem[r]{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}}
\end{refList}
\bigskip
\begin{refList}{3}
  \refItem{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}} &
  \refItem{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}} &
  \refItem{Jack B.\ Nimble \\ Department of Bar \\ Quxington University \\ \email{[email protected]}} \\
  \refItem{John Smith \\ Department of Foo \\ Quxington University \\ \email{[email protected]}} &
  \refItem{Jane Doe \\ Department of Bar \\ Bazville University \\ \email{[email protected]}}
\end{refList}

\end{document}

答案2

我会将该multicol 包与 结合使用trivlist

\documentclass{article}
\usepackage{multicol}

\begin{document}

\begin{multicols}{3}
\begin{trivlist}
\item John Smith\\
Department of Foo\\
Quxington University\\
[email protected]\\

\item John Smith\\
Department of Foo\\
Quxington University\\
[email protected]\\

\item John Smith\\
Department of Foo\\
Quxington University\\
[email protected]\\

\end{trivlist}
\end{multicols}

\end{document}

您可以根据需要将{3}in 更改为任意数量的列,当然也可以将和组合到用户定义的环境中。\begin{multicols}{3}trivlistmulticols

相关内容