列表中的垂直间距——latex3 语法

列表中的垂直间距——latex3 语法

此后问题,我需要在包含文件条目后添加一些内容,以确保接下来的内容从下一行开始。我不想跳过源代码中的空白行,我希望命令能帮我完成。

一位 MWE 表示:

在此处输入图片描述

一个更现实的例子,n10 和 n11 之间的问题:

在此处输入图片描述

\begin{filecontents*}{typea.tex}
here latex stuff
\end{filecontents*}

\begin{filecontents*}{typeb.tex}
\begin{minipage}{5cm}
\item here latex stuff

more stuff
\end{minipage}
\end{filecontents*}

\documentclass{article}
\usepackage{xparse,l3regex}

% #### tarassinput pour les item dans les minipages
\ExplSyntaxOn
\NewDocumentCommand{\tarassinput}{om}
 {
  \tl_set_from_file:Nnn \l_tarass_input_tl { } { #2 }
  % \A matches the start
  % \c{begin} matches \begin
  % \cB. matches any "group begin" token
  % \cE. matches any "group end" token
  \regex_match:nVF
    { \A \c{begin} \cB. minipage \cE. }  
    \l_tarass_input_tl 
    { \IfValueTF{#1}{ \item[#1] }{ \item } }
  \tl_use:N \l_tarass_input_tl  
 }
\cs_generate_variant:Nn \regex_match:nnF { nV } 
\ExplSyntaxOff

\begin{document}

\begin{itemize}
\item Start
\tarassinput{typea}
\tarassinput{typeb}
\end{itemize}

\end{document}

答案1

你的迷你页面应该是这样的

\begin{minipage}[b]{\linewidth}
Material\par\xdef\tpd{\theprevdepth}
\end{minipage}

那么正则表达式匹配代码可以是

\NewDocumentCommand{\tarassinput}{om}
 {
  \tl_set_from_file:Nnn \l_tarass_input_tl { } { #2 }
  \regex_match:nVTF { \A \c{begin} \cB. minipage \cE. } \l_tarass_input_tl
   {% true branch: input the minipage and restore \prevdepth
    \tl_use:N \l_tarass_input_tl \par\prevdepth=\tpd\scan_stop:
   }
   {% false branch
    \IfValueTF{#1}{ \item[#1] }{ \item }
    \tl_use:N \l_tarass_input_tl
   }
 }
\cs_generate_variant:Nn \regex_match:nnTF { nV }

答案2

评论太长:问题与 latex 3 或输入法无关。可以用下面的 MWE 显示。如你所见,小页面扰乱了间距。虽然可以通过仔细分析代码找到合适的值来纠正间距,但我会不惜一切代价避免这种结构。它看起来不自然,而且是错误的。

\documentclass{article}

\begin{document}

\begin{itemize}

\item Start

\item
here latex stuff

\begin{minipage}[t]{5cm}
\item here latex stuff

more stuff

\item more stuff
\end{minipage}

\item outside minipage

\item outside minipage
\end{itemize}

\end{document}

在此处输入图片描述

我认为你走错了路。你为什么要把 \item 放在 minipage 里面?当它在外面时一切都很好:

\documentclass{article}
\usepackage{lipsum}
\begin{document}

\begin{itemize}

\item Start

\item
here latex stuff


\item \begin{minipage}[t]{5cm}
\lipsum*[1]
more stuff\strut
\end{minipage}\quad
\begin{minipage}[t]{3cm}\vspace{0pt}\rule{1cm}{3cm}
\end{minipage}

\item more stuff


\item outside minipage

\item outside minipage
\end{itemize}

\end{document}

您还可以使用 addmargin 环境(来自 KOMA 类)来缩小文本。

在此处输入图片描述

相关内容