如何减少自定义列表环境中列之间的水平间距?

如何减少自定义列表环境中列之间的水平间距?

我正在调整我的简历,并定义自定义列表环境。考虑以下 MWE:

\documentclass{article}
    
\usepackage{ragged2e}
    
\pagestyle{empty}
      
\setlength{\tabcolsep}{0pt}
\newenvironment{entrylist}{%
  \noindent
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}rl}
}{%
  \end{tabular*}
}
\renewcommand{\bfseries}{}
\newcommand{\entry}[4]{%
  #1&\parbox[t]{10.00cm}{\strut%
    \textbf{#2}%
    \hfill%
    {\footnotesize #3\par}%no!\\%
    #4\vspace{\parsep}%
  }\\}
    
\begin{document}
    
\begin{entrylist}
    
\entry
   {Office}
   {A very fancy building in a very fancy place}
   {}
   {}
  
\entry
   {Website}
   {www.somename.com}
   {}
   {}
    
 \entry
   {Email}
   {somename a aaa}
   {}
   {}
   
 \entry
   {Phone}
   {+00 0000 000000}
   {}
   {}
  
\end{entrylist}
    
\end{document}

MWE 生成以下输出:

在此处输入图片描述

我遇到的唯一问题是左右列之间的空白量。我需要减少两列之间的间距,但不影响 中指定的 10cm 长度#1&\parbox[t]{10.00cm}{\strut%或 中指定的文本宽度\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}rl}。本质上,我只需要让左列更靠近右列。有人能帮我减少两列之间的空白吗?

编辑

看到这些评论后,我意识到我的问题可能措辞不清楚,所以让我再试一次。在我的文档中,我调用了几个entrylists。我需要所有这些entrylists来满足两个条件:

(1)左右列之间间隔相同、合理;

(2)列之间的空白处要水平对齐。

我似乎无法同时实现 (1) 和 (2)。要么我让右列和左列之间有合理的间隔,要么让右列正确对齐entrylists。但是,无论我怎么尝试,我似乎都无法同时实现 (1) 和 (2)。

我在这里说明为什么 David Carlisle 的答案实现了 (1) 但没有实现 (2)。David 在他的回答中建议:

\documentclass{article}
    
\usepackage{ragged2e}
    
\pagestyle{empty}
      
    \newenvironment{entrylist}{%
      \noindent
  \begin{tabular}{@{}rl}
    }{%
      \end{tabular}
    }
    \renewcommand{\bfseries}{}
    \newcommand{\entry}[4]{%
      #1&\parbox[t]{10.00cm}{\strut%
        \textbf{#2}%
        \hfill%
        {\footnotesize #3\par}%no!\\%
        #4\vspace{\parsep}%
      }\\}
    
\begin{document}
    
\begin{entrylist}
    
\entry
   {Office}
   {A very fancy building in a very fancy place}
   {}
   {}
  
\entry
   {Website}
   {www.somename.com}
   {}
   {}
    
 \entry
   {Email}
   {somename a aaa}
   {}
   {}
   
 \entry
   {Phone}
   {+00 0000 000000}
   {}
   {}
  
\end{entrylist}

\begin{entrylist}
    
\entry
   {Longer name}
   {A very fancy building in a very fancy place}
   {}
   {}
  
\entry
   {Much much longer name}
   {www.somename.com}
   {}
   {}
    
 \entry
   {Email}
   {somename a aaa}
   {}
   {}
   
 \entry
   {Phone}
   {+00 0000 000000}
   {}
   {}
  
\end{entrylist}
    
\end{document}

生成的输出满足 (1) 但不满足 (2),因为第一个环境中的列分隔与第二个环境中的列分隔不对齐。查看输出:

在此处输入图片描述

我真的很抱歉,因为从一开始我就没有更好地措辞我的问题——这是我的错。

感谢大家的时间。

编辑现在,我将展示 Bernard 的答案如何实现所需的输出,但会改变章节标题前的间距。他建议使用类似

\documentclass{article}
    
\usepackage{ragged2e}
\usepackage{eqparbox}
    
\pagestyle{empty}
      
\newenvironment{entrylist}{%
\noindent
\begin{tabular*}{\textwidth}{@{}r@{\enspace}l@{}}
}{%
  \end{tabular*}
}
\renewcommand{\bfseries}{}
\newcommand{\entry}[4]{%
  \eqmakebox[H][r]{#1}&\parbox[t]{10.00cm}{\strut%
    \textbf{#2}%
    \hfill%
    {\footnotesize #3\par}%no!\\%
    #4\vspace{\parsep}%
  }\\}
  
\begin{document}
    
\begin{entrylist}
    
\entry
   {Office}
   {A very fancy building in a very fancy place}
   {}
   {}
  
\entry
   {Website}
   {www.somename.com}
   {}
   {}
    
 \entry
   {Email}
   {somename a aaa}
   {}
   {}
   
 \entry
   {Phone}
   {+00 0000 000000}
   {}
   {}
  
\end{entrylist}

\section*{Whatever fancy title you can think of}

\begin{entrylist}
    
\entry
   {Longer name}
   {A very fancy building in a very fancy place}
   {}
   {}
  
\entry
   {Much much longer name}
   {www.somename.com}
   {}
   {}
    
 \entry
   {Email}
   {somename a aaa}
   {}
   {}
   
 \entry
   {Phone}
   {+00 0000 000000}
   {}
   {}
  
\end{entrylist}
    
 \end{document}

输出如下:

在此处输入图片描述

与原始代码相比,您可以检查字幕是否较低:

在此处输入图片描述

我不知道为什么伯纳德的回答会降低标题,但我怀疑这可能与包裹有关eqparbox

答案1

你正在强制两列尽可能地分开,\extracolsep所以自然的做法是使用tabulartabular*并使用自然分离,所以

\begin{tabular}{@{}rl}

然而这产生了

在此处输入图片描述

由于您的设置

\setlength{\tabcolsep}{0pt}

这意味着默认情况下表格列应该无缝相连。

如果你删除该行,你会得到

在此处输入图片描述

或者,如果您需要在文档的其他部分添加一些空格,例如

\begin{tabular}{r@{\hspace{5pt}}l}

或您需要的任何空间。

答案2

这是一个可能的解决方案,带有eqparbox和不带有 的表格前言@\extracolsep。但是我认为,关于可能的分页符,最简单的解决方案是使用 定义自定义描述环境enumitem。\documentclass{article}

\usepackage{ragged2e}
\usepackage{eqparbox}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.2pt}
\pagestyle{empty}

\newenvironment{entrylist}{%
  \noindent
  \begin{tabular*}{\textwidth}{@{}r@{\enspace}l@{}}
}{%
  \end{tabular*}
}
\renewcommand{\bfseries}{}
\newcommand{\entry}[4]{%
  \eqmakebox[H][r]{#1}&\parbox[t]{10.00cm}{\strut%
    \textbf{#2}%
    \hfill%
    {\footnotesize #3\par}%no!\\%
    #4\vspace{\parsep}%
  }\\}

\begin{document}

\begin{entrylist}

\entry
   {Office}
   {A very fancy building in a very fancy place}
   {}
   {}

\entry
   {Website}
   {www.somename.com}
   {}
   {}

 \entry
   {Email}
   {somename a aaa}
   {}
   {}

 \entry
   {Phone}
   {+00 0000 000000}
   {}
   {}

\end{entrylist}

\end{document} 

在此处输入图片描述

相关内容