我想要一份使用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 中,以表明它们不会干扰所需的输出,如下所示
希望这可以帮助你。
答案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}