hooks

命令钩子与包钩子,哪个更好?
hooks

命令钩子与包钩子,哪个更好?

在为我的包设计钩子接口时,我发现我有两种定义钩子的方法: \documentclass{article} \begin{document} \section*{Method 1: Use Command Hooks} \NewDocumentCommand\MyPkgSomeHook{}{} \AddToHook{cmd/MyPkgSomeHook/before}{hello} \AddToHook{cmd/MyPkgSomeHook/before}{world} \UseHook{cmd/MyPkgSomeHook/before} \secti...

Admin

为什么 \AtEndDocument 不会在文档的*末尾*执行?
hooks

为什么 \AtEndDocument 不会在文档的*末尾*执行?

我肯定做了一件非常愚蠢的事情,但我已经尽力了,但还是没有成功。我正在处理最近提交的一个错误pagectrl @ca7dc3。 我有以下最小示例: \documentclass{minimal} \AtEndDocument{\typeout{wat}} \begin{document} hello, world \end{document} 有以下日志 This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex 2014.12...

Admin

我应该如何诊断这个问题?弄清楚何时将代码插入钩子以改变第三方包的行为
hooks

我应该如何诊断这个问题?弄清楚何时将代码插入钩子以改变第三方包的行为

这个问题对我来说似乎很令人困惑,所以我不确定你是否能够理解它。 我知道如何解决这个问题(现在)。我想知道的是我应该如何诊断和解决这个问题。解决这个问题花了我大约 24 小时(诚然,这个问题不是我唯一的工作)。考虑到我相对容易地隔离了问题,并且解决方案相对有据可查,这似乎是一个过长的时间。花时间的是弄清楚在哪里--- 或者更准确地说,什么时候放它。 我的实际代码相当复杂,但更大的复杂性并没有真正使发现问题变得更加困难。 基本问题是需要生成一个或多个词汇表,但不能glossaries在顶层创建标题、目录条目和分页符。但我确实想glossaries为子词汇表创建标...

Admin

在每页开头设置宏的值
hooks

在每页开头设置宏的值

我正在尝试使用钩子在每个页面的开头设置宏的值shipout。请考虑以下示例: \documentclass{article} \ExplSyntaxOn \tl_new:N \g_mymodule_test_tl \hook_gput_code:nnn { shipout/firstpage } { mymodule } { \tl_gset:Nn \g_mymodule_test_tl { BEGIN-OF-PAGE } } \hook_gput_code:nnn { shipout/before } { mymodule } { ...

Admin

触发 para/begin hook 中的代码,用于精确的段落
hooks

触发 para/begin hook 中的代码,用于精确的段落

我使用钩子制作了一个简单的多级段落计数器系统para/begin: \documentclass{article} \usepackage{lipsum} \usepackage{expl3} \usepackage{xparse} \usepackage{fancyhdr} \makeatletter \ExplSyntaxOn \int_gzero_new:N \g__mypkg_max_depth_int %\int_gzero_new:N \g__mypkg_debug_count_int \AddToHook { para/begin } ...

Admin

将任意环境的主体传递给挂钩命令
hooks

将任意环境的主体传递给挂钩命令

我想将一个命令注入到使用环境体作为参数的任意环境中。 期望的行为 \begin{AnyEnvironment}{MandatoryEnvArg}[OptionalEnvArg] ... \end{AnyEnvironment} 应扩大到 \begin{AnyEnvironment}{MandatoryEnvArg}[OptionalEnvArg] \MyMacro{...} \end{AnyEnvironment} 其中...是任意内容(可能包括\pars和其他环境和命令)。 用例 我对这个可能有点奇怪的问题的用例如下:我希望能够使用 来“预处理...

Admin

将宏执行延迟到容器浮动被放置时
hooks

将宏执行延迟到容器浮动被放置时

我需要一个绝对定位textblock*和一个浮动元素同时出现在同一个页面上。当textblock*在里面写入时figure,它会立即执行,因此在代码中出现的页面上可以看到figure,但浮动元素最终放置的位置则不会显示。以下 MWE 导致以下输出。 我如何才能延迟执行宏(在本例中为 ),\mytextblock直到浮动实际布置完毕?我能否以某种方式存储它并将其挂接到浮动的发货处? \documentclass[a7paper]{scrbook} \usepackage[absolute]{textpos} \newcommand{\mytextblock}...

Admin

Circuitikz 使用挂钩或自定义组件通过欧洲电阻调整标签基线位置
hooks

Circuitikz 使用挂钩或自定义组件通过欧洲电阻调整标签基线位置

我正在尝试找出一种将标签定位在欧洲电阻器内的方法。 我知道答案这里,但我认为该解决方案有点太复杂了。 我已经找到了以下方法: \documentclass{article} \usepackage{tikz} \usepackage[european]{circuitikz} \begin{document} \begin{circuitikz} \tikzset{R/.append style={color=red, label distance=-13pt, label/align = rotate}} \def\DIR{0,45,...

Admin

测试用户命令是否位于文档末尾
hooks

测试用户命令是否位于文档末尾

命令是否有机会\testcommand测试它是否是 之前的最后一个用户命令\end{document}?由于 处仍有钩子enddocument,这似乎有点棘手。 我正在考虑放置一个空命令\somethingempty并让它\testcommand检测它\peek_meaning:N(TF)。但是,如果我将它放在钩子中,首先\testcommand看到的将是某种\UseHook。 提出这个问题的动机是,在我的包中,有一些间距调整命令应该只在文档中间完成。 下面是 MWE。 \documentclass{article} \ExplSyntaxOn \def...

Admin

在加载后添加到包钩子
hooks

在加载后添加到包钩子

我对内核钩子的理解是,添加到钩子只会影响添加后的实例。对于文档内钩子来说,这似乎是正确的。例如, \begin{quote} some text \end{quote} \AddToHook{env/quote/before}{HOOK CODE} \begin{quote} some text \end{quote} 仅HOOK CODE出现在第二个quote环境之前。 在一个包文件中,我试图找出在加载另一个包时产生错误的最佳方式。为了解决之前加载的不兼容包的问题,​​可以等到begindocument,但我想知道错误是否可以更快出现(节省加载其他包...

Admin

文件钩子中的 \begin 和 \end 导致错误
hooks

文件钩子中的 \begin 和 \end 导致错误

使用我的包jwjournal,整个文档被放入名为 的环境中jwjournal,该环境会对文本进行一些正则表达式替换。但是,如果文本是通过\input或来输入的\include,则文件内容将不会被环境处理。作为解决这个问题的临时方法,可以在 之前停止此环境,然后\input重新启动此环境,并且子文件的内容必须放在\begin{jwjournal}和之间\end{jwjournal}。 由于我不想让用户被这个内部环境所困扰,我想通过文件钩子自动执行此操作。因此我写了以下代码: \hook_gput_code:nnn { begindocument/end } {...

Admin

如何测试带有特定标签的钩子是否存在
hooks

如何测试带有特定标签的钩子是否存在

文档lthooks说: 但是,如何提前知道带有此给定标签的钩子是否存在?在我的包中,我希望在添加带有该标签的新代码之前清除钩子中带有给定标签的代码,以确保添加的代码不重复。我该如何做到这一点而不触发警告? ...

Admin

使用 lthooks 在本地挂载命令
hooks

使用 lthooks 在本地挂载命令

跟随上一个问题作为我的练习,我尝试使用 l3keys 和 lthooks 模仿 thmtools 与 amsthm 的行为。现在我被困在钩子部分。thmtools 为每个定理环境和通用(应用于所有定理)定义了 prehead、posthead、prefoot 和 postfoot 钩子。prehead 和 postfoot 钩子很简单。对于 posthead 钩子,我发现应该在 amsthm 命令之后添加代码\deferred@thm@head。(或者也许是\@begintheorem?区别在于\ignorespaces。) 对于通用钩子,只需执行 \New...

Admin

ltpara 的新钩子管理和 scrlayer-scrpage(用于自动段落计数等)
hooks

ltpara 的新钩子管理和 scrlayer-scrpage(用于自动段落计数等)

我读到过,不应该使用,\everypar而应该\AddToHook{para/begin}使用自动段落枚举和相关操作。原则上,这很好用(mwe 不计数,只打印一个简单的符号): \documentclass{scrartcl} \usepackage{lipsum} \begin{document} \AddToHook{para/begin}{*} \lipsum \end{document} 一旦scrlayer-scrpage加载,事情就会变得糟糕(见下文)。文档的页眉和页脚中似乎有更多段落现在应用了新para/begin设置。 不会出现此问题\ev...

Admin

'memoir' v3.8 和 'csquotes' 的问题
hooks

'memoir' v3.8 和 'csquotes' 的问题

使用最新更新(v.3.8)时,如果我还按以下方式memoir加载和定义有效报价,则会检测到错误:csquotes \documentclass{memoir} \usepackage{csquotes} \MakeBlockQuote{<}{|}{>} \begin{document} Test \end{document} LaTeX 崩溃并出现以下错误: ! LaTeX hooks 错误:无法将通用钩子添加到‘@xfloat’。 有人能帮帮我吗?谢谢 ...

Admin