![环境补丁参数](https://linux22.com/image/443629/%E7%8E%AF%E5%A2%83%E8%A1%A5%E4%B8%81%E5%8F%82%E6%95%B0.png)
我在示例中使用包taggedline
中的环境进行源属性。默认情况下,这些会以文档字体打印。为了减少视觉混乱,我曾考虑将它们打印在,例如。但是,我无法找到如何修补环境定义中的相应行,无论是否重新定义文档中的整个环境以更改一行。这可能吗?tagpair
\footnotesize
etoolbox
xpatch
环境taggedline
将归因标签作为参数,该参数在内部处理为\savebox{\t@g}{#2}
。基本上,我想在部分\footnotesize
之前放置一个格式化选项#2
,或者做些类似的事情。
\documentclass{article}
\usepackage{tagpair}
\usepackage{gb4e}
% Copied & adjusted from
% /usr/local/texlive/2021/texmf-dist/tex/latex/tagpair/tagpair.sty
\makeatletter
\renewenvironment{taggedline}[2][0.75]%
{\def\linewidthfactor{#1}%
% \savebox{\t@g}{#2}%
\savebox{\t@g}{\footnotesize#2}% <- can this be done by etoolbox/xpatch?
\ignorespaces}%
{\unskip%
\hfil\penalty0%
\hskip1em%
\hbox{}%
\nobreak%
\hfill%
\begin{varwidth}[t]{\linewidthfactor\linewidth}
\narrowraggedleft\strut\unhbox\t@g
\end{varwidth}}
\makeatother
\begin{document}
\begin{exe}
\ex
\begin{taggedline}{(Example 2021: 123)}
\gll Dies ist ein Beispiel \\
this is an example \\
\glt `This is an example.'
\end{taggedline}
\end{exe}
\end{document}
答案1
您需要修补宏\taggedline
,它是同名环境开头的内部表示。但是,由于此环境有一个可选参数,因此使用包\patchcmd
的宏修补此宏有点棘手etoolbox
。
但是你可以使用包\xpatchcmd
中的宏xpatch
来实现这一点。你的代码会短得多:
\documentclass{article}
\usepackage{tagpair}
\usepackage{gb4e}
\usepackage{xpatch}
\xpatchcmd{\taggedline}{{#2}}{{\footnotesize#2}}{}{}
\begin{document}
\begin{exe}
\ex
\begin{taggedline}{(Example 2021: 123)}
\gll Dies ist ein Beispiel \\
this is an example \\
\glt `This is an example.'
\end{taggedline}
\end{exe}
\end{document}
输出与您的问题中的输出相同。