使用 Philex 我如何才能改变子示例之间的间距?

使用 Philex 我如何才能改变子示例之间的间距?

请问有人能解释一下如何修补 Philex 来自定义示例、子示例和子子示例之间的间距吗?分别

例如,如果我希望子示例之间有间距,但子子示例之间没有间距,或者如果我希望示例之间的间距比子示例之间的间距更大。

相关页面: 使用 linguex,如何更改子示例之间的间距?

分数维:

  \documentclass[12pt,oneside]{article}
    \usepackage{philex}
    \usepackage{etoolbox}
    \newlength{\SubItemSkip}
    \setlength{\SubItemSkip}{.66\baselineskip}
    \makeatletter
    \patchcmd{\a}{\itemsep\z@}{\itemsep\SubItemSkip}{}{}
    \makeatother
    
    
\begin{document}
    
    \lb{tests}{
        \lba{inforx}{Possible modification by `in/for \textit{x} time'.}
        \lbb{fc}{Possible modification by \textit{frequent}/\textit{constant}.}
        \lbb{control}{Possible Implicit Agent Control.}
        \lbz{byp}{\textit{By}-phrases and, when available, possessives realize arguments.}}
    
    
    \lb{examples}{
        \lba{inforx-ex}{
            \lba{inx-ex}{La destruction de la ville par l'armée en quelques heures nous a stupéfaits.}
            \lbz{forx-ex}{Le chef de service a ordonné la surveillance du patient par les internes durant plusieurs jours.}}}
        
\end{document}

在此处输入图片描述

答案1

以下代码允许您同时设置子示例和子子示例的\topsep\itemsep值。顶层示例之间的间距只是一个新段落,因此无法设置该间距;如果需要,您可以在示例之间添加\medskip或。在此示例代码中,我为每个示例设置了不同的值;但是,对任何一个级别使用相同的和值bigskip可能更有意义。\topsep\itemsep

由于此代码仅修改linguex代码,因此它对于 也同样适用linguex

\documentclass{article}
\usepackage{philex}
\usepackage{etoolbox}
\newlength{\lngxtopsepii}
\setlength{\lngxtopsepii}{10pt}% linguex uses .3\Extopsep by default
\newlength{\lngxtopsepiii}
\setlength{\lngxtopsepiii}{5pt}
\newlength{\lngxitemsepii}
\setlength{\lngxitemsepii}{10pt}
\newlength{\lngxitemsepiii}
\setlength{\lngxitemsepiii}{5pt}
\makeatletter
\patchcmd{\a}{\ifnum\theExDepth=2\topsep .3\Extopsep\else\topsep 0pt\fi 
     \parsep\z@\itemsep\z@}
     {\ifnum\theExDepth>1\topsep\csname lngxtopsep\roman{ExDepth}\endcsname
     \itemsep\csname lngxitemsep\roman{ExDepth}\endcsname\else\topsep\z@\itemsep\z@\fi
     \parsep\z@}{}{}
\makeatother
\begin{document}

\lbp{clauses}{PP}{Some main words, followed by
\lba{first}{Time flies
\lba{firstnew}{Like an arrow}
\lbz{lastnew}{And much too fast}}
\lbb{second}{But never stops}
\lbz{last}{Which is lucky}
and a concluding comment.}

\medskip
\lbp{clauses}{PP}{Some main words, followed by
\lba{first}{Time flies
\lba{firstnew}{Like an arrow}
\lbz{lastnew}{And much too fast}}
\lbb{second}{But never stops}
\lbz{last}{Which is lucky}
and a concluding comment.}


\end{document}

代码解释

中的主要示例命令linguex\a宏,它设置了\list示例所依赖的环境。因此,我们使用etoolbox包的修补功能来修改 的定义\a\patchcmd宏有四个参数:要替换的原始宏的部分、替换项以及两个参数“修补成功”和“修补不成功”。只要我们知道修补程序可以工作,那么这些参数就可以安全地留空。

因此,在此处的具体示例中,我将linguex设置列表的\topsep\itemsep的代码替换为设置依赖于列表级别的值的代码。我将使用的长度命名为iiiii后缀,以便我可以使用从列表深度值构造值\roman{ExDepth}

输出

代码输出

相关内容