环境补丁参数

环境补丁参数

我在示例中使用包taggedline中的环境进行源属性。默认情况下,这些会以文档字体打印。为了减少视觉混乱,我曾考虑将它们打印在,例如。但是,我无法找到如何修补环境定义中的相应行,无论是否重新定义文档中的整个环境以更改一行。这可能吗?tagpair\footnotesizeetoolboxxpatch

环境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}

输出与您的问题中的输出相同。

相关内容