在我看来,中的示例expex
对的长度没有影响\linewidth
,当您想用小页面将两件东西放在一起,或者包含一个表格时,这尤其烦人。
我已经发现了zref-abspos
但是,我从中得到的值也很奇怪,而且tabu
出于某种原因,似乎无论如何都不会注意到它们。这是一个 MWE:
\documentclass{article}
\usepackage{expex}
\usepackage{lipsum}
\usepackage{tabu}
\usepackage{zref-abspos}
\newlength{\remaining}
\newcommand{\remain}[1]{%
\zsavepos{#1}%
\setlength{\remaining}{\linewidth minus \zposx{#1}sp}%
}
\begin{document}
The linewidth: \the\linewidth. \lipsum[1]
\pex
\a \remain{test}%
\begin{tabu} to \linewidth {| X | X |}
\hline
Linewidth & \the\linewidth \\
\hline
\end{tabu}
\a \begin{tabu} to \remaining {| X | X |}
\hline
Remaining & \the\remaining \\
\hline
\end{tabu}
\xe
\begin{itemize}
\item Linewidth: \the\linewidth
\begin{itemize}
\item Linewidth: \the\linewidth
\end{itemize}
\end{itemize}
\end{document}
这是我尝试计算示例文本和左页边距之间的距离时得到的结果。expex
似乎没有提供这个距离的长度,至少文档中没有明确提到它,只有numoffset
(页边距和示例编号之间的距离)和textoffset
(示例编号和文本之间的距离)。然而,174pt 似乎太多了,因为即使是第二级项目符号的文本也只有 47.0003pt。
enumitem
对于带有's的示例,似乎也无法访问缩进长度textoffset
。
答案1
我假设您希望能够添加占用 ExPex 示例行剩余空间的表格。ExPex 不使用 LaTeXlist
构造来构建枚举,因此正如您所观察到的,\linewidth
它不是 ExPex 更新的参数。所以您说得对,您需要计算剩余空间。为此,您需要使用 ExPex 在构建示例数字时使用的长度。
需要进行两次计算,具体取决于示例是示例\ex
还是\pex
示例。为了简单起见,我使用了etoolbox
自动添加计算,以便\remaining
为每个示例计算值。我使用了选项showframe
来geometry
显示计算正确。出于测试目的,我重复了两种类型的示例,使用pgffor
显示不同的示例数字。
\documentclass{article}
\usepackage[showframe]{geometry}
\usepackage{expex}
\usepackage{tabu}
\usepackage{calc}
\usepackage{etoolbox}
\usepackage{pgffor}
\newlength{\remaining}
\newcommand{\remainpex}{%
\setlength{\remaining}{\linewidth-\lingtextoffset-\linglabelwidth-
\lingnumoffset-\linglabeloffset-\widthof{\exnoprint}}%
}
\newcommand{\remainex}{%
\setlength{\remaining}{\linewidth-\lingnumoffset-
\lingtextoffset-\widthof{\exnoprint}}%
}
\pretocmd{\pex}{\remainpex}{}{}
\pretocmd{\ex}{\remainex}{}{}
\begin{document}
\foreach \x in {1,10,100}{
\excnt=\x
\pex
\a %
%
\begin{tabu} to \remaining {| X | X |}
\hline
sometext & sometext \\
\hline
\end{tabu}
\a \begin{tabu} to \remaining {| X | X |}
\hline
sometext & sometext \\
\hline
\end{tabu}
\xe
\ex
\begin{tabu} to \remaining {| X | X |}
\hline
sometext & sometext \\
\hline
\end{tabu}
\xe
}
\end{document}