![如何遍历 lorem ipsum 句子](https://linux22.com/image/466817/%E5%A6%82%E4%BD%95%E9%81%8D%E5%8E%86%20lorem%20ipsum%20%E5%8F%A5%E5%AD%90.png)
我希望能够lipsum
逐句迭代包中的 lorem ipsum 文本。我使用它来模拟列表,当相同的文本一遍又一遍重复时,这一点非常明显。这不是理想的选择,所以我希望迭代器每次使用时都能从中断的地方继续。每次调用此命令时,我只需提供我想要的句子数。
下面是我开始使用的一个例子,这样你就能明白我所说的一遍又一遍重复的文本是什么意思。
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\begin{itemize}
\item \lipsum[-][-5]
\item \lipsum[-][-2]
\item \lipsum[-][-1]
\item \lipsum[-][-11]
\end{itemize}
\end{document}
答案1
为了解决这个问题,我创建了以下最小工作示例中演示的命令:
\documentclass{article}
\usepackage{lipsum}
\newcounter{acounter}
\setcounter{acounter}{0}
\newcommand{\lipsumiterator}[1]{
\lipsum[-][\arabic{acounter}+1-\arabic{acounter}+#1]
\addtocounter{acounter}{#1}
% max value is 2191
}
\begin{document}
\begin{itemize}
\item \lipsumiterator{5}
\item \lipsumiterator{2}
\item \lipsumiterator{1}
\item \lipsumiterator{11}
\end{itemize}
\end{document}
答案2
答案3
我的想法是解开一个 Lipsum 段落,将其分成句子,然后看看我们是否有足够的句子;如果没有,则拆分下一个 Lipsum 段落,依此类推。
\documentclass{article}
\usepackage[nopar]{lipsum}
\ExplSyntaxOn
\NewDocumentCommand{\lipsumiterator}{m}
{% #1 = number of desired sentences
\partphysics_iterator:n { #1 }
}
% the current lipsum paragraph index
\int_new:N \g_partphysics_iterator_current_int
% the sentence container
\seq_new:N \g_partphysics_iterator_sentences_seq
% the sentence to typeset
\tl_new:N \l__partphysics_iterator_sentence_tl
\cs_new_protected:Nn \partphysics_iterator:n
{
\__partphysics_iterator_available:n { #1 }
\prg_replicate:nn { #1 }
{
\seq_gpop_left:NN \g_partphysics_iterator_sentences_seq \l__partphysics_iterator_sentence_tl
\tl_use:N \l__partphysics_iterator_sentence_tl.~
}
}
\cs_new_protected:Nn \__partphysics_iterator_available:n
{
\int_compare:nF { #1 < \seq_count:N \g_partphysics_iterator_sentences_seq }
{
\int_gincr:N \g_partphysics_iterator_current_int
\use:e { \exp_not:N \unpacklipsum[ \int_eval:n { \g_partphysics_iterator_current_int }]}
\seq_set_split:NnV \l_tmpa_seq { . } \lipsumexp
\seq_map_inline:Nn \l_tmpa_seq
{
\tl_if_blank:nF { ##1 }
{
\seq_gput_right:Nn \g_partphysics_iterator_sentences_seq { ##1 }
}
}
\__partphysics_iterator_available:n { #1 }
}
}
\ExplSyntaxOff
\begin{document}
\begin{itemize}
\item \lipsumiterator{5}
\item \lipsumiterator{2}
\item \lipsumiterator{1}
\item \lipsumiterator{11}
\item \lipsumiterator{11}
\item \lipsumiterator{11}
\item \lipsumiterator{11}
\item \lipsumiterator{11}
\end{itemize}
\lipsumiterator{120}
\end{document}
实际上,这个例子有三页。