![在自定义环境中创建列表时出现问题](https://linux22.com/image/337587/%E5%9C%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%88%9B%E5%BB%BA%E5%88%97%E8%A1%A8%E6%97%B6%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
这是我在 LaTeX stackexchange 上发表的第一篇文章,它与我在使用自定义类时遇到的一些问题有关。
我正在尝试用 LaTeX 写简历。我在网上复制了一些代码来创建一个类文件,麻烦的部分有以下定义:
\newenvironment{eventlist}{%
\newcommand*\inskip{}
\renewcommand\item[3]{%
\inskip%
{\raggedleft\sc ##1\\[1pt]}
{##2}\\[2pt]
{\Large\it ##3}
\medskip
\renewcommand\inskip{\bigskip}}}
{\bigskip}
这应该为各个部分创建一个漂亮的标题就业和教育。
之后我在主文档中声明,例如:
\begin{eventlist}
\item{September 2013 -- To date}
{Physics B.Sc. student}
{ETH Z\"urich}
Here goes a description of what I did specifically, which is formatted in
'standard article font' and I'd love to have it in bullet point format.
...
\end{eventlist}
目前一切都运行良好。
问题是,如果我在括号外面写东西,\item
您会看到上面的示例,同时仍然在事件列表环境中,并尝试创建一个列表(通过\begin{itemize}
... \end{itemize}
),输出非常糟糕,并且根本不左对齐。
但是,为了更好地传达想法,我确实需要有一个项目符号列表。目前,我可以使用 • 符号来实现这一点,但是您可以理解为什么这样做不太好(首先,它在进入下一行后不会缩进,这会导致列表看起来很乱)。
此外,如果您想运行这段代码,我推荐 XeLaTeX 或 LuaLaTeX,因为其他编译器不起作用(其他编译器可能适用于类文件的这一部分,但整个内容只能用这两个编译器进行编译)。
回顾:关于如何在这种环境下创建美观的列表,您有什么想法吗?
非常感谢您的帮助和支持!
答案1
我建议使用enumitem
自定义description
环境来完成此操作。我 \item
用一个\event
命令来代替,该命令接受三个参数并执行精确的格式化。
\documentclass[12pt, british]{article}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[showframe]{geometry}
\usepackage[autostyle]{csquotes}
\usepackage{enumitem}
\newcounter{rowctr}
\newlist{eventlist}{description}{1}
\setlist[eventlist]{font=\normalfont, style=nextline, leftmargin=0pt}
\newcommand\event[3]{%
\item[\setcounter{rowctr}{0}%
\parbox{\linewidth}{{\hfill\textsc{#1}}\\\raggedright#2\\ \Large#3}]%
\leavevmode\vspace*{-\partopsep}}%
\begin{document}
\begin{eventlist}
\event{September 2013 -- To date}
{Physics B.Sc. student}
{ETH Zürich}
\begin{itemize}[wide, leftmargin =*]
\item Here goes a description of what I did specifically, which is formatted in
\enquote{standard article font} and I'd love to have it in bullet point format.
\item Some other description
\end{itemize}
\end{eventlist}
\end{document}