expex 中的 \linewidth

expex 中的 \linewidth

在我看来,中的示例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。

尝试使用 zref-abspos 获取示例文本与左页边距之间的距离的示例

enumitem对于带有's的示例,似乎也无法访问缩进长度textoffset

答案1

我假设您希望能够添加占用 ExPex 示例行剩余空间的表格。ExPex 不使用 LaTeXlist构造来构建枚举,因此正如您所观察到的,\linewidth它不是 ExPex 更新的参数。所以您说得对,您需要计算剩余空间。为此,您需要使用 ExPex 在构建示例数字时使用的长度。

需要进行两次计算,具体取决于示例是示例\ex还是\pex示例。为了简单起见,我使用了etoolbox自动添加计算,以便\remaining为每个示例计算值。我使用了选项showframegeometry显示计算正确。出于测试目的,我重复了两种类型的示例,使用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}

代码输出

相关内容