为什么我会收到“缺失数字,视为零”的错误?

为什么我会收到“缺失数字,视为零”的错误?

我目前正在为我的简历定义一个自定义列表环境。在这个社区的大力帮助下,我设法获得了所需的列表环境,并且它运行良好。但是,现在编译会产生错误。我非常震惊,因为自上次成功编译以来我没有改变任何东西(至少没有故意改变)。因此,我完全不知道是什么导致了错误。我得到的错误是“缺少数字,视为零”。以下 MWE 复制了错误。

\documentclass{article}
    
\usepackage{ragged2e}

\pagestyle{empty}
      
\newenvironment{entrylist}{%
  \noindent
  \begin{tabular*}{}{@{\extracolsep{\fill}}rl}
}{%
  \end{tabular*}
}
\renewcommand{\bfseries}{}
\newcommand{\entry}[4]{%
    \parbox[t]{2cm}{#1\raggedleft}&\parbox[t]{\dimexpr\textwidth-2\tabcolsep-2cm}{\strut%
    \textbf{#2}%
    \hfill%
    {\footnotesize #3\par}\\%
    #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}

如能得到任何帮助并找到并纠正错误的根源,我们将不胜感激。

非常感谢大家抽出时间。

答案1

您的代码中有错误。

  • 环境的第一个参数tabular*不能为空。相反,它必须是一个可用的,即正长度。因此,我建议你替换

    \begin{tabular*}{}{@{\extracolsep{\fill}}rl}
    

    \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}rl}
    

    实际上,列的内容被硬编码为固定宽度的\parbox实体。因此,该tabular*机制根本没有做任何有用的事情。因此,只需编写

    \newenvironment{entrylist}{%
      \noindent
      \begin{tabular}{@{}rl@{}}
    }{%
      \end{tabular}
    }
    
  • 其次,\\

    {\footnotesize #3\par}\\%
    

    since\par已经产生了换行符。


总而言之,我认为您可能希望按如下方式定义环境entrylist和宏:\entry

\newenvironment{entrylist}{%
  \noindent
  \begin{tabular}{@{} r l @{}}}{%
  \end{tabular}}

\newcommand{\entry}[4]{%
    \parbox[t]{2cm}{#1\raggedleft} &
    \parbox[t]{\dimexpr\textwidth-2\tabcolsep-2cm\relax}{\strut%
    #2%
    \hfill%
    {\footnotesize #3\par}
    #4\vspace{\parsep}%
  }\\}

相关内容