\newcommand 带有可选的多行参数和隐式 itemize 环境

\newcommand 带有可选的多行参数和隐式 itemize 环境

在起草文本时,我想细分和分组文本片段和关键字,以便在整个文档中轻松地重新排序它们。

此类文本片段的示例如下:


示例 1):两个参数(第二个参数是可选的且多行)

在 LaTeX 文件中有类似这样的内容......

\mycommand{Summary of this paragraph (always provided)} {
    optional textline 1
    optional textline 2
    ...
}

...pdf 格式应该为...

本段摘要(始终提供)

  • 可选文本行 1
  • 可选文本行 2
  • ...

示例 2):一个参数

在 LaTeX 文件中有类似这样的内容......

\mycommand{Summary of this paragraph (always provided)}

...应该在 pdf 中产生结果(没有可选参数)为...

本段摘要(始终提供)


我已经尝试了一些方法\newcommand但我并不是真正的专家。

所需的功能包括

  • \mycommand获取至少一个参数并将其打印到 PDF(例如粗体字
  • \mycommand将可变数量的以下行(在括号中)作为第二个参数,并将每个新行添加\item到列表中(无需在文件中\itemize写入)\item.tex
  • 将其更改\mycommand为仅显示文本最终会生成运行文本而无需删除命令\item

任何帮助均感激不尽。

答案1

您可以利用xparseLaTeX3 功能。

\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\outline}{ m o }
 {
  \par\noindent\textbf{#1}
  \IfNoValueTF { #2 }
   {
    \par\vspace{\topsep} % no list of items
   }
   {
    \egreg_outline_items:n { #2 } % there are items
   }
 }

\seq_new:N \l_egreg_outline_items_seq
\cs_new_protected:Npn \egreg_outline_items:n #1
 {
  % split the \\ separated list of items
  \seq_set_split:Nnn \l_egreg_outline_items_seq { \\ } { #1 }
  % make an itemize with them
  \begin{itemize}
  \seq_map_inline:Nn \l_egreg_outline_items_seq
   {
    \item ##1
   }
  \end{itemize}
 }
\ExplSyntaxOff

\begin{document}

\section{First}

\outline{Some text for the outline}

Here is something in the section.

\section{Second}

\outline{Here I have more}[
  something \\
  something else \\
  again
]

Here is something in the section.

\end{document}

在此处输入图片描述

相关内容