我正在尝试更改目录中使用的字体。问题是:使用 生成的目录opmac
,字体是rm
默认的。
我设法更改了文件中的几段代码opmac
来更改标题字体和页码字体,但实际文本根本没有改变。
做opmac
了如下修改:
- 在第 180 行之后
\resizeall
,我将字体更改为\tocfont
。- 在第 360 行,
\wtotoc0
我再次将字体更改为\tocfont
(用于chap
命令)。sec
在第 366 行和 372 行(针对和secc
命令)进行了相同的更改。- 在第 485 行,将所有出现的字体替换为
\tocfont
again。
那么最小的示例文档是:
\input opmac
\font\tocfont="Bradley Hand" at 18pt
\nonum\notoc\sec \tocfont Contents
\tocfont
\maketoc
\sec First
\sec Second
\secc Sub
\sec Third
\bye
如果我仔细研究一下\jobname.ref
,就会发现它仍然rm
在那些地方使用。
下面是我目前得到的图像。
下面是我想要的(图片是我自己的宏生成的):
我们真诚地感谢任何建议或帮助。
PS 我不懂捷克语,因此如果引用捷克文档的话请解释一下,谢谢。:p
答案1
如果你能举个例子,回答起来会容易一些,但其他方法都行不通
\begingroup\let\rm\relax
...
\endgroup
目录周围的字体将停止\rm
改变
答案2
不幸的是,opmac.tex
字体的选择有好几种。
\input opmac
\font\tocfont="Linux Biolinum O" at 18pt
\eoldef\chap#1{\ifnonum\else \global\advance\chapnum by1 \fi
\chaphook {\globaldefs=1 \secnum=0 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax
\edef\thechapnum{\the\chapnum}\let\thetocnum=\thechapnum
\def\dotocnumafter{\wtotoc0\tocfont{#1}}%
\printchap{#1}\resetnonumnotoc
}
\eoldef\sec#1{\ifnonum\else \global\advance\secnum by1 \fi
\sechook {\globaldefs=1 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax
\edef\thesecnum{\othe\chapnum.\the\secnum}\let\thetocnum=\thesecnum
\def\dotocnumafter{\wtotoc1\tocfont{#1}}%
\printsec{#1}\resetnonumnotoc
}
\eoldef\secc#1{\ifnonum\else \global\advance\seccnum by1 \fi
\secchook {}\relax
\edef\theseccnum{\othe\chapnum.\the\secnum.\the\seccnum}\let\thetocnum=\theseccnum
\def\dotocnumafter{\wtotoc2\tocfont{#1}}%
\printsecc{#1}\resetnonumnotoc
}
\def\maketoc{\par \ifx\toclist\empty
\opwarning{\noexpand\maketoc -- data unavailable, TeX me again}\openref
\else \begingroup\baselineskip=27pt\toclist\endgroup \fi}
\def\tocline#1#2#3#4#5{{\leftskip=#1\iindent \rightskip=2\iindent
\ifischap\advance\leftskip by\iindent\fi
\ifnum#1>1 \advance\leftskip by\iindent\fi
\toclinehook \noindent\llap{#2\toclink{#3.}\enspace}%
{#2#4}\nobreak\tocdotfill\pglink{#5}\nobreak\hskip-2\iindent\null\par}}
\nonum\notoc\sec \tocfont Contents
\maketoc
\sec First
\sec Second
\secc Sub
\sec Third
\bye
由于我没有 Bradley Hand,所以我使用了不同的字体。
更多粒度:
\input opmac
\eoldef\chap#1{\ifnonum\else \global\advance\chapnum by1 \fi
\chaphook {\globaldefs=1 \secnum=0 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax
\edef\thechapnum{\the\chapnum}\let\thetocnum=\thechapnum
\def\dotocnumafter{\wtotoc0\tocchapfont{#1}}%
\printchap{#1}\resetnonumnotoc
}
\eoldef\sec#1{\ifnonum\else \global\advance\secnum by1 \fi
\sechook {\globaldefs=1 \seccnum=0 \tnum=0 \fnum=0 \dnum=0}\relax
\edef\thesecnum{\othe\chapnum.\the\secnum}\let\thetocnum=\thesecnum
\def\dotocnumafter{\wtotoc1\tocsecfont{#1}}%
\printsec{#1}\resetnonumnotoc
}
\eoldef\secc#1{\ifnonum\else \global\advance\seccnum by1 \fi
\secchook {}\relax
\edef\theseccnum{\othe\chapnum.\the\secnum.\the\seccnum}\let\thetocnum=\theseccnum
\def\dotocnumafter{\wtotoc2\tocssecfont{#1}}%
\printsecc{#1}\resetnonumnotoc
}
\def\maketoc{\par \ifx\toclist\empty
\opwarning{\noexpand\maketoc -- data unavailable, TeX me again}\openref
\else \toclist \fi}
\def\tocline#1#2#3#4#5{{\leftskip=#1\iindent \rightskip=2\iindent
\ifischap\advance\leftskip by\iindent\fi
\ifnum#1>1 \advance\leftskip by\iindent\fi
\toclinehook \noindent\llap{#2\toclink{#3.}\enspace}%
{#2#4}\nobreak\tocdotfill\pglink{#5}\nobreak\hskip-2\iindent\null\par}}
\font\tocfont="Linux Biolinum O" at 18pt
\font\tocchapfont="Linux Biolinum O" at 10pt
\let\tocsecfont\tocchapfont
\let\tocssecfont\tocsecfont
\nonum\notoc\sec \tocfont Contents
\maketoc
\sec First
\sec Second
\secc Sub
\sec Third
\bye