帮我重写这个命令吗?

帮我重写这个命令吗?

我对 TeX 完全陌生,刚开始使用我在 github 上找到的简历模板。在该模板中,有一个类文件,其中包含环境“cventries”和命令“cventry”:

\newcommand*{\cventry}[5]{
  \setlength\tabcolsep{0pt}
  \setlength{\extrarowheight}{0pt}
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
    \ifempty{#2#3}
      {\entrypositionstyle{#1} & \entrydatestyle{#4} \\}
      {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\
      \entrypositionstyle{#1} & \entrydatestyle{#4} \\}
    \multicolumn{2}{L{17cm}}{\descriptionstyle{#5}} \\
  \end{tabular*}
}

现在,这基本上在屏幕上呈现如下

 Title                                Location                           
 Position                             Date 
 Description

但我希望每当我不填写位置或日期字段时它就呈现如下状态:

 Title                                Date
 Description

因此,简而言之,我想知道我是否需要执行另一个命令或使用 \ifempty 的一些组合来实现这一点。在此先感谢您的帮助。

哦,如果你需要更多背景信息来回答我的问题,这是完整的类文件

答案1

通过仅提供代码片段,它使事情变得困难,因为我们必须想象所有未定义的命令可能意味着什么。

首先,我假设问题中有一个拼写错误,你想要的是位置或地点缺席(因为如果没有日期你为什么想要日期)。

然后我假设这些\Xstyle命令仅仅是文本样式......这是一个非常安全的假设。

我也假设了一个合理的定义\ifempty,但它可能不是你的课程所假设的。

最后,我不得不修改表格的格式,因为LR列未定义。在这些情况下,我将这些列类型替换为p。在实际实施修复时,您应该将它们改回原来的状态。

代码中已经有测试 if 标题位置不存在,所以我嵌套了两个额外的测试,如果位置为空,如果不是,则位置为空。我这样做是因为问题指定了一个或者缺少字段的条件,而不是健康)状况。

这是 MWE。

\documentclass{article}
\usepackage{array}
\def\entrypositionstyle#1{\textit{#1}}
\def\entrytitlestyle#1{\textbf{#1}}
\def\entrylocationstyle#1{\textit{\textbf{#1}}}
\def\entrydatestyle#1{\textsc{#1}}
\def\descriptionstyle#1{\textup{#1}}
\def\ifempty#1#2#3{\ifx\relax#1\relax#2\else#3\fi}

\newcommand*{\cventry}[5]{
  \setlength\tabcolsep{0pt}
  \setlength{\extrarowheight}{0pt}
%  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{12.5cm} R{4.5cm}}
  \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} p{12.5cm} p{4.5cm}}
    \ifempty{#2#3}
      {\entrypositionstyle{#1} & \entrydatestyle{#4} \\}% WHEN TITLE & LOCATION EMPTY
      {%
        \ifempty{#1}{\entrytitlestyle{#2} & \entrydatestyle{#4} \\}% WHEN POSITION EMPTY
        {%
          \ifempty{#3}{\entrytitlestyle{#2} & \entrydatestyle{#4} \\}% WHEN LOC EMPTY
          {%
            \entrytitlestyle{#2} & \entrylocationstyle{#3} \\
            \entrypositionstyle{#1} & \entrydatestyle{#4} \\%
          }
        }
      }
%    \multicolumn{2}{L{17cm}}{\descriptionstyle{#5}} \\
    \multicolumn{2}{p{17cm}}{\descriptionstyle{#5}} \\
  \end{tabular*}
}
\begin{document}
\cventry{position}{title}{location}{date}{description}
\par\hrulefill\par
\cventry{position}{}{}{date}{description}
\par\hrulefill\par
\cventry{}{title}{location}{date}{description}
\par\hrulefill\par
\cventry{position}{title}{}{date}{description}
\end{document}

在此处输入图片描述

相关内容