ltxdockit 包中的 \envitem 以不同的字体打印花括号

ltxdockit 包中的 \envitem 以不同的字体打印花括号

我编写了一个小型 LaTeX 包,并正在使用ltxdockit包准备其文档。我发现字体存在奇怪的行为。

考虑以下 MWE。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{ltxdockit}
\begin{document}
\begin{ltxsyntax}
    \envitem{envname}[opt]{arg}

    this is an example.
\end{ltxsyntax}
\end{document}

使用 编译该源代码后pdflatex,结果如下所示:

MWE的结果

我注意到,开头的花括号envname是用\rmfamily而不是 来表示的\ttfamily,这对我来说很奇怪。

我查看ltxdockit.sty并发现了一个宏\ltd@envitem,它是环境内部的\envitem\leted” 。ltxsyntax

\def\ltd@envitem#1{%
  \ltd@itembreak
  \item[\textbackslash begin]\{{\ltxsyntaxfont\ltxsyntaxlabelfont#1}\}%
  \ltd@pdfbookmark{#1}{#1}%
  \begingroup
  \ltd@syntaxsetup
  \ltxsyntaxfont
  \def\@tempa{%
    \ltd@itemsave
    \itemsep\z@
    \item[\textbackslash end]\{{\ltxsyntaxfont\ltxsyntaxlabelfont#1}\}%
    \ltd@itemrest}%
  \ltd@parseargs}

但是,除了和之外,我看不出上面第 3 行和第 11 行之间的区别,begin并且end不知道为什么这些部分的花括号在字体系列方面看起来不同。

我怎样才能将第一个花括号的字体更改为\ttfamily?尽管软件包作者说,“除非用户能够独立解决问题,否则不要尝试使用它”,但如果您能给我一些建议,我将不胜感激。

答案1

开始和结束之间的区别在于\{选择当前字体,通常在开始时为罗马字体,但在结束时为等宽字体。

显然这不是有意的,在这里我改变了开始和结束行,以将括号移动到字体更改的范围内。

在此处输入图片描述

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{ltxdockit}
\makeatletter
\def\ltd@envitem#1{%
  \ltd@itembreak
  \item[\textbackslash begin]{\ltxsyntaxfont\{{\ltxsyntaxlabelfont#1}\}}%
  \ltd@pdfbookmark{#1}{#1}%
  \begingroup
  \ltd@syntaxsetup
  \ltxsyntaxfont
  \def\@tempa{%
    \ltd@itemsave
    \itemsep\z@
    \item[\textbackslash end]{\ltxsyntaxfont\{{\ltxsyntaxlabelfont#1}\}}%
    \ltd@itemrest}%
  \ltd@parseargs}

\makeatother
\begin{document}
\begin{ltxsyntax}
    \envitem{envname}[opt]{arg}

    this is an example.
\end{ltxsyntax}
\end{document}

相关内容