请问有人能解释一下如何修补 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
的代码替换为设置依赖于列表级别的值的代码。我将使用的长度命名为ii
和iii
后缀,以便我可以使用从列表深度值构造值\roman{ExDepth}
。