所有条目都有一个标题和两个副标题。标题后面是文本、项目符号或两者的组合。请注意,我希望不同条目之间留出较大的间隙,而副标题与每个条目其余部分之间的间隙较小。
我已经定义了一个\newcommand
调用\NewEntry
来指定每个条目中的信息:
\newcommand{\NewEntry}[4]{
{\setlength{\parskip}{20pt}
#1 \\
#2 - #3 \\[3pt]}
#4 \par
}
使用最后提供的代码调用此命令,将得到以下输出:
除了第三条条目中的字幕和第一个项目符号之间的间距太大之外,这还算令人满意。我之前问过如何解决这个问题问题,而不提供一般背景。从答案中可以清楚地看出,额外的空间是将\itemize
(默认情况下从新行开始)与\\
我的代码中的组合的结果\NewEntry
。此外,一些答案明确表示或暗示可能有更好的方法来构造我的文档,并建议我提供上下文,这就是我在这里尝试做的。
我期待有关解决此问题的最佳方法(包括结构性变化)的建议。
MWE 如下:
\documentclass{article}
\usepackage{lipsum}
\usepackage{enumitem}
\setlength{\parindent}{0pt}
\newcommand{\NewEntry}[4]{
{\setlength{\parskip}{20pt}
#1 \\
#2 - #3 \\[3pt]}
#4 \par
}
\begin{document}
\NewEntry{TITLE}{SUBTITLE 1}{SUBTITLE 2}
{\lipsum[13]}
\NewEntry{TITLE}{SUBTITLE 1}{SUBTITLE 2}
{Some Text
\begin{itemize}[nosep]
\item First Item
\item Second Item
\end{itemize}
}
\NewEntry{TITLE}{SUBTITLE 1}{SUBTITLE 2}
{\begin{itemize}[nosep]
\item First Item
\item Second Item
\end{itemize}
}
\end{document}
答案1
像这样吗?
在没有更多上下文的情况下,很难说如何最好地构造它。例如,为什么不使用\section*{}
and\subsection*{}
或类似的?
假设您由于某种原因不想这样做,以下代码将使用命令\NewEntryX{}{}{}{}
和新的无序列表生成上述输出entries
:
\documentclass{article}
\usepackage{lipsum}
\usepackage{enumitem,xparse}
\newlist{entries}{itemize}{1}
\setlist[entries]{label=\textbullet,nosep,topsep=.5em}
\NewDocumentCommand \NewEntryX { m m m m }{%
{\setlength\parindent{0pt}%
\vskip 20pt plus 1ex minus .5ex
\par
\MakeUppercase{#1}\par
\MakeUppercase{#2 --- #3}\vskip .5em plus .1em minus .05em\par
#4}\par}
\begin{document}
\NewEntryX{Title}{Subtitle 1}{Subtitle 2}
{\lipsum[13]}
\NewEntryX{Title}{Subtitle 1}{Subtitle 2}
{Some Text
\begin{entries}
\item First Item
\item Second Item
\end{entries}}
\NewEntryX{Title}{Subtitle 1}{Subtitle 2}
{\begin{entries}
\item First Item
\item Second Item
\end{entries}}
\end{document}
请注意,宏定义中尽可能多地进行了格式化,例如,您输入标题时使用的是正常标题大写形式,命令会将其大写。如果您后来改变主意,希望将其改为粗体或小写形式,这会方便很多。