在起草文本时,我想细分和分组文本片段和关键字,以便在整个文档中轻松地重新排序它们。
此类文本片段的示例如下:
示例 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
您可以利用xparse
LaTeX3 功能。
\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}