我编写了一个小型 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
,结果如下所示:
我注意到,开头的花括号envname
是用\rmfamily
而不是 来表示的\ttfamily
,这对我来说很奇怪。
我查看ltxdockit.sty
并发现了一个宏\ltd@envitem
,它是环境内部的\envitem
“ \let
ed” 。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}