如何在自定义环境中定义命令

如何在自定义环境中定义命令

我正在开发一个自定义的.cls简历排版工具。我正在尝试创建一个自定义环境来提供工作/教育经历的格式。我想指定如下内容:

\begin{cvsection}
  \cvdate{xx-xx-xxxx}
  \cvcompany{Some company & Co.}
  \cvposition{Toilet cleaner}
  \cvcomment{I love cleanin' dem toilets!}
\end{cvsection}

因此,我定义了我的环境并尝试\newcommand...在环境定义内使用。LaTeX 不喜欢这样,那么解决这个问题的最佳方法是什么?

答案1

以这种方式组织环境的一个目的是允许输入的灵活性。

您不需要在环境中定义命令;经常使用的策略如下:

\newcommand{\cvdate}[1]{\renewcommand{\givencvdate}{#1}}
\newcommand{\cvcompany}[1]{\renewcommand{\givencvcompany}{#1}}
\newcommand{\cvposition}[1]{\renewcommand{\givencvposition}{#1}}
\newcommand{\cvcomment}[1]{\renewcommand{\givencvcomment}{#1}}
\newcommand{\givencvdate}{REQUIRED!}
\newcommand{\givencvcompany}{REQUIRED!}
\newcommand{\givencvposition}{REQUIRED!}
\newcommand{\givencvcomment}{} % this is optional

\newenvironment{cvsection}
 {\begin{flushleft}}
 {\textbf{\givencvdate}\\
  \givencvcompany\\
  \givencvposition
  \ifx\empty\givencvcomment\else\\[.5ex] \textit{\givencvcomment}\fi
  \end{flushleft}}

这样,在环境中指定数据的顺序就无关紧要了。让我们看几个例子

\begin{cvsection}
  \cvdate{xx-xx-xxxx}
  \cvcompany{Some company \& Co.}
  \cvposition{Toilet cleaner}
  \cvcomment{I love cleanin' dem toilets!}
\end{cvsection}

\begin{cvsection}
  \cvposition{Toilet cleaner}
  \cvdate{xx-xx-xxxx}
  \cvcompany{Another company \& Co.}
\end{cvsection}

当然,你必须调整的定义来cvsection满足你的需要。

在此处输入图片描述

相关内容