使用一些与列表结合的命令(逐项列举和枚举)的格式化问题

使用一些与列表结合的命令(逐项列举和枚举)的格式化问题

我想要一份使用itemize和命令的项目清单。

如果在 之前有一个命令,则它不起作用\myitem。使用 命令不会产生任何项目。

\iexitembegin出现格式错误。

您有解决方案吗?我确实需要一个可行的方法,也就是说,这对于日常使用来说是一个重要的问题。

梅威瑟:

\documentclass[a4paper]{article}

\hypersetup{pdftitle={Article},%
    pdfauthor={Username},%
    pdfdisplaydoctitle=true}

\usepackage[english]{babel}
\usepackage{sidecap}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{wrapfig}
\usepackage{titlepic}
\usepackage{indentfirst}
\usepackage{float}
\usepackage{enumerate}

\newcommand{\partone}[1]{
\begin{itemize}[topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt, itemindent=-0ex,leftmargin=4.3ex]
\item[--] {\bfseries #1}
\end{itemize}
\smallskip
\smallskip
\smallskip
}

\newcommand{\myitem}[1]{\item[--] #1}
\newcommand{\myitembegin}{\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]}
\newcommand{\myitemend}{\end{itemize}}

\title{Hello}
\date{}
\author{} 

\begin{document}
\maketitle

\partone{hello title}
\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]
\item[--] test
\end{itemize}
\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]
\item[--] test
\end{itemize}
\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]
\item[--] test
\end{itemize}
\myitembegin
\myitem{hello world}
\myitem{lkdjfajdsfa}
\myitem{lkdjfajdsfa}
\myitem{toudouldsafjdslkdjfajdsfa}
\myitemend

\end{document}

答案1

就像@Schweinebacke 所写的那样,您应该定义一个真实的环境,而不是使用 \newcommand,因为当用于比插入一个小宏更复杂的事情时,它可能会产生意想不到的结果。

enumitem包可以完全满足您的要求。我复制了您的 MWE 并对其进行了编辑,以执行您正在寻找的任务。基本上,我只是将其更改\myitembegin\newlist{myitem}{2},其中2是列表的最大深度。

下一行是\setlist[myitem]{key-val options},在这里您可以定义项目标签和其他特定于列表的选项。完整的示例如下所示(我添加了包hyperref以适应您的 MWE):

\documentclass[a4paper]{article}
\usepackage[english]{babel}
\usepackage{sidecap}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{wrapfig}
\usepackage{titlepic}
\usepackage{indentfirst}
\usepackage{float}
\usepackage{enumerate}
\usepackage{hyperref}
\usepackage{enumitem}

\hypersetup{pdftitle={Article},%
    pdfauthor={Username},%
    pdfdisplaydoctitle=true}


\newcommand{\partone}[1]{
\begin{itemize}[topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt, itemindent=-0ex,leftmargin=4.3ex]
\item[--] {\bfseries #1}
\end{itemize}
\smallskip
\smallskip
\smallskip
}

\newlist{myitem}{itemize}{2}
\setlist[myitem]{label={--},noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt}

\title{Hello}
\date{}
\author{} 

\begin{document}
\maketitle

\partone{hello title}
\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]
\item[--] test
\end{itemize}
\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]
\item[--] test
\end{itemize}
\begin{itemize}[noitemsep, topsep=0pt,itemsep=-1ex,partopsep=0pt,parsep=0pt]
\item[--] test
\end{itemize}
\begin{myitem}
\item hello world
\item lkdjfajdsfa
\item lkdjfajdsfa
\item toudouldsafjdslkdjfajdsfa
\end{myitem}

\end{document}

大多数包没有特别的用途,但我把它们留在 MWE 中,以表明它们不会干扰所需的输出,如下所示 pdflatex 输出

希望这可以帮助你。

答案2

我不确定 的用途是什么itemsep=-1ex。您可以定义自己的itemize变体。

在下面的代码中,我删除了所有不必要的包;当然,对于您的文档,请添加您需要的包。

\documentclass[a4paper]{article}
\usepackage{enumitem}

\newcommand{\partone}[1]{%
\begin{itemize}[
  label=--,
  topsep=0pt,
  itemsep=-1ex,
  partopsep=0pt,
  parsep=0pt,
  itemindent=-0ex,
  leftmargin=4.3ex
]
\item \textbf{#1}
\end{itemize}
\addvspace{\medskipamount}
}

\newenvironment{myitemize}
 {\begin{itemize}[label=--,noitemsep, topsep=0pt,itemsep=0pt,partopsep=0pt,parsep=0pt]}
 {\end{itemize}}

\begin{document}

\partone{hello title}
\begin{myitemize}
\item hello world
\item lkdjfajdsfa
\item lkdjfajdsfa
\item toudouldsafjdslkdjfajdsfa
\end{myitemize}

\end{document}

在此处输入图片描述

相关内容