我正在编写简历,并尝试将工作/教育列表格式化为如下所示的内容:
公司或大学(地点)
所获职位或学位
我在那里做了一些事情的描述。
我已经输入了足够多的内容,我想定义一个环境来处理格式,这样我就不必对其进行硬编码(并且/或者当我改变主意时必须单独重新执行每一个!)。也就是说,我希望能够做类似的事情
\begin{job}
\institution{Company or University}
\location{Location}
\position{Job title or degree received}
\description{Some description of what I did there.}
\end{job}
并让其输出上述内容。我有点盲目地尝试使用例如为 \institution、\location、\position 等定义新命令
\def\institution#1{\gdef{\@institution}{#1}}
然后创建一个新的环境,在“后环境”代码中执行格式化,如下所示:
\newenvironment{job}{}{\textbf{\@institution}}
我把这两个都放在\makeatletter
...\makeatother
块中,我的文档在序言中编译得很好。但是,当我尝试实际使用此环境时,例如插入
\begin{job}
\institution{Someplace I worked}
\end{job}
在文档正文的某处,我收到一条错误消息
Missing control sequence inserted: <inserted text>
\inaccessible
当它读到这一\institution{Someplace I worked}
行,然后读到第二行
Undefined control sequence: <recently read> \@institution
当它读到该\end{job}
行时。
所以,显然我这种天真的方法并不奏效 —— 还有更好的方法可以解决这个问题吗?
答案1
这里有几个想法 - 一个是使用\newcommand
,另一个是使用\newenvironment
;也许你可以根据自己的需要进行调整
代码:
\documentclass{article}
% as a command
\newcommand{\job}[4]{% 1: company, 2: location, 3: title, 4: description
\noindent\begin{tabular}{@{}l}%
\bfseries{#1 (#2)}\\
\itshape{#3}\\
#4
\end{tabular}%
}
% or perhaps an environment
\newenvironment{myjob}[3]{% 1: company, 2: location, 3: title
\noindent\begin{tabular}{@{}p{\textwidth}@{}}%
\bfseries{#1 (#2)}\\
\itshape{#3}\\
}%
{%
\end{tabular}%
}
\begin{document}
\job{Company or University}%
{Location}%
{Job title or degree received}%
{Some description of what I did there.}
\begin{myjob}{Another institution}%
{Somewhere else}%
{Another thing}%
Long description of stuff| could be anything
\begin{itemize}
\item discovered
\item a
\item few
\item important
\item things
\end{itemize}
\end{myjob}
\end{document}