Plain TeX 加 OPmac 宏:设置页面(背景)颜色

Plain TeX 加 OPmac 宏:设置页面(背景)颜色

摘要:在 TeX + OPmac 中添加设置页面背景的宏


在......之外http://petr.olsak.net/opmac-tricks-e.html#coltext...OPmac 技巧和窍门将核心opmac.tex宏包中的附加宏列表列示如下:

下面建议使用的代码作为在文档中更改颜色的方法,与\input color将颜色包集成到可用的宏代码中以便在 TeX 中设置的文档的 TeX 方式相冲突。

\def\color#1{\localcolor\colorA#1\relax}
\def\colorA#1#2\relax{\uppercase{\csname#1}#2\endcsname\ignorespaces}

尽管 OPmac 提供了颜色,但它不包含用于设置文档页面颜色的宏,指的是将文档所有页面的颜色设置为某种背景颜色,定义正确的框可以解决这个问题……超出了我的浅薄技能,因此出现了\input color,后者大多是多余的,因为 OPmac 在所有方面都提供了颜色功能,包括上述宏,可以动态地本地更改颜色/彩色背景。

问题:有人能提供一个简短的附加宏来定义正确的“框”和一个附加用户命令来设置页面背景吗?因为颜色已经实现。

理由:Petr 提供了一个注重功能而不是样式的包,上述要求额外的用户功能。其次,包含color.tex宏文件只是为了添加背景颜色,注释掉上面的 OPmac-tricks 宏来解决冲突是针锋相对的,第三,Petr 的拥有最小可靠代码库的理念被包含color.tex上述所有代码所扼杀。

个人理由:校对时的背景颜色和文本颜色对任何作者/程序员来说都是一个很大的好处,大多数打印的 pdf 都是白底黑字,在源 (vim-solarized) 和 pdf 输出之间切换时会造成眼睛负担。为了使两者之间的来回一致,我们都将生命的一部分时间花在“屏幕上”,这不是小事。到了打印时间,由于其余格式相同,编译为黑白打印,就像在 或 中\input opmacmodified_to_proofread_onscreen添加\input opmac_modified_to_print一个或两个条件一样简单opmac_modified.tex

简化问题:附加宏以在 TeX + OPmac 中轻松设置页面背景

进一步深入研究该问题,无论使用浮点数还是简单\lipsum[2-10]文本,color.tex 宏都会在运行几页时产生“出血”,第二页位于页面的左侧和底部/顶部。

然后,任何文档中都没有提到颜色及其在页面背景着色方面的用途。人们认为“颜色”是指文本着色,无论是局部的还是全局的,而“背景”着色是局部的,即为“方框”着色。

事后看来,理论能力应该是存在的,毕竟 latex 是建立在 tex 基元之上的,页面的 latex 颜色背景不能凭空而来,而 OPmac 宏可以轻松地在本地渲染背景颜色。

有人可能会说,排版只是为了打印,因此这个问题并不重要,但排版过程需要从源代码跳转到屏幕上的编译,这足以说明在创作过程中,为了可用性,将背景调整为源代码的背景(如果是 vim-solarized)。毕竟,问题并不那么简单。

以原则性的方式讨论 tex 中的页面着色能力,并从另一方面确信其非必要性,然后是相关的明确需求,这将是非常令人满意的。

答案1

通过使用 OPmac 原生宏并省去 color.tex 宏代码(该代码与某些 OPmac 颜色定义等产生冲突),解决了设置页面背景颜色的问题。第二个好处是紧凑性,一是编码应有良好的文档记录,二是紧凑。两个条件都满足了。

宏(0021)——PO 08。2013 在 petr.olsak.net/opmac-tricks-e.html#coltext 公共页面上,包含了完美创建整个文档的页面背景颜色所需的所有紧凑代码。

Petr Olsak 在发布问题的第一天就亲自参考了他的公共网页上提供的宏。

以下是代码示例:实现页面着色所需的全部内容:

    \def\prepghook{\pdfliteral{q \bgcolor\space k -0.996264 0 0 0.996264 -72 72 cm
  \nopt{\hoffset} \nopt{\voffset} -\nopt{\pdfpagewidth} -\nopt{\pdfpageheight} re f Q}}
\def\nopt#1{\expandafter\ignorept\the#1}

\def\setbasecolor#1{#1\expandafter\setbasecolorA#1\pdfblackcolor}
\def\setbgcolor#1{\expandafter\setbasecolorA#1\bgcolor}
\def\setbasecolorA#1#2#3{\def#3{#2}}

举个例子:

\setbasecolor\Yellow
\setbgcolor\Blue

相关内容