如何更改 opmac 生成的目录中的字体?

如何更改 opmac 生成的目录中的字体?

我正在尝试更改目录中使用的字体。问题是:使用 生成的目录opmac,字体是rm默认的。

我设法更改了文件中的几段代码opmac来更改标题字体和页码字体,但实际文本根本没有改变。

opmac了如下修改:

  1. 在第 180 行之后\resizeall,我将字体更改为\tocfont
  2. 在第 360 行,\wtotoc0我再次将字体更改为\tocfont(用于chap命令)。
  3. sec在第 366 行和 372 行(针对和secc命令)进行了相同的更改。
  4. 在第 485 行,将所有出现的字体替换为\tocfontagain。

那么最小的示例文档是:

\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

在此处输入图片描述

相关内容