我目前正在为简历定义自定义列表环境。该环境按预期工作,但有一个警告。即,带有升序和降序的字母会影响行宽,从而使输出变得丑陋。MWE 就是这样:
\documentclass{article}
\pagestyle{empty}
\setlength{\tabcolsep}{0pt}
\newenvironment{entrylist}{%
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll}
}{%
\end{tabular*}
}
\renewcommand{\bfseries}{}
\newcommand{\entry}[4]{%
\spaceskip0pt\xspaceskip0pt % for ragged2e document settting
#1\hspace*{0pt plus -1fil}\mbox{}&\parbox[t]{10.00cm}{%
\textbf{#2}%
\hfill%
{\footnotesize #3\par}%no!\\%
#4\vspace{\parsep}%
}\\}
\begin{document}
\begin{entrylist}
\entry
{Office addr}
{A very fancy building in a very fancy place}
{}
{}
\entry
{Web addr}
{www.somename.com}
{}
{}
\entry
{Pers email}
{somename a aaa}
{}
{}
\entry
{Work email}
{veryfancyname2 a aaa}
{}
{}
\entry
{UK phone}
{+00 0000 000000}
{}
{}
\entry
{SP phone}
{+00 000 000 000}
{}
{}
\end{entrylist}
\end{document}
我声称输出很丑陋,因为例如第 1 行和第 2 行之间的空白大于第 2 行和第 3 行之间的空白。这可能有点难以看出,但我提到的不同间距确实存在,我确信造成这种情况的罪魁祸首是使用带有降部的字母。
我想找到一种方法确保上面定义的列表环境保持行间相同的空间量,无论字母是否有升部/降部。
非常感谢大家抽出时间。
答案1
我在一条评论中建议\strut
在 的开头添加一个\parbox
,这样 parbox 的“顶部”将占据文本行的整个垂直范围。通常,我可能还会建议\strut
在 的末尾添加一个\parbox
(用于换行的情况)。但是,在这种情况下,因为 parbox 在末尾附近有 ,所以即使为空白, {...\par}#4\vspace{\parsep}
a\strut
也会使 退出垂直模式#4
,这可能不是 OP 的意图。OP 向我保证,这种方法(一\strut
开始只有一个)让他很满意。
\documentclass{article}
\pagestyle{empty}
\setlength{\tabcolsep}{0pt}
\newenvironment{entrylist}{%
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ll}
}{%
\end{tabular*}
}
\renewcommand{\bfseries}{}
\newcommand{\entry}[4]{%
\spaceskip0pt\xspaceskip0pt % for ragged2e document settting
#1\hspace*{0pt plus -1fil}\mbox{}&\parbox[t]{10.00cm}{\strut%
\textbf{#2}%
\hfill%
{\footnotesize #3\par}%no!\\%
#4\vspace{\parsep}%
}\\}
\begin{document}
\begin{entrylist}
\entry
{Office addr}
{A very fancy building in a very fancy place}
{}
{}
\entry
{Web addr}
{www.somename.com}
{}
{}
\entry
{Pers email}
{somename a aaa}
{}
{}
\entry
{Work email}
{veryfancyname2 a aaa}
{}
{}
\entry
{UK phone}
{+00 0000 000000}
{}
{}
\entry
{SP phone}
{+00 000 000 000}
{}
{}
\end{entrylist}
\end{document}
答案2
我不确定这个\parbox
是干什么用的。你可以利用tabularx
它。
\documentclass{article}
\usepackage{tabularx}
\pagestyle{empty}
\newenvironment{entrylist}{%
\noindent
\tabularx{\textwidth}[t]{@{}l@{\quad}X@{}}
}{%
\endtabularx
}
\newcommand{\entry}[4]{%
#1\hfill
\mbox{\footnotesize #3}%
\if\relax\detokenize{#4}\relax\else\\#4\fi
\\\noalign{\vspace{\parsep}}%
}
\begin{document}
\noindent X\dotfill X
% this is just to show the baselines
\noindent\makebox[0pt][l]{\hbox{\vrule\vtop{
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
\hbox{\strut\vrule height0.1pt depth 0.1pt width \textwidth}\vskip\parsep
}}}%
\begin{entrylist}
\entry
{Office addr}
{A very fancy building in a very fancy place}
{}
{}
\entry
{Web addr}
{www.somename.com}
{}
{}
\entry
{Pers email}
{somename a aaa}
{}
{}
\entry
{Work email}
{veryfancyname2 a aaa}
{}
{}
\entry
{UK phone}
{+00 0000 000000}
{}
{}
\entry
{SP phone}
{+00 000 000 000}
{}
{}
\end{entrylist}
\end{document}