![在编译期间将所有空格替换为“{\textcolor{white}{i}} + 空格”](https://linux22.com/image/456409/%E5%9C%A8%E7%BC%96%E8%AF%91%E6%9C%9F%E9%97%B4%E5%B0%86%E6%89%80%E6%9C%89%E7%A9%BA%E6%A0%BC%E6%9B%BF%E6%8D%A2%E4%B8%BA%E2%80%9C%7B%5Ctextcolor%7Bwhite%7D%7Bi%7D%7D%20%2B%20%E7%A9%BA%E6%A0%BC%E2%80%9D.png)
在编译过程中,如何用以下方式替换文档中除前言和参考书目之外的所有空白:
\textcolor{white}{i} + <a white space>
这是一个需要处理的 MWE。
\documentclass[twocolumn]{autart}
\usepackage{lipsum}
\usepackage{filecontents}
\begin{filecontents*}{My.bib}
@Article{b,
date = 2003,
author = {Author, Amy},
title = {Title},
journaltitle = {Journal},
volume = 10,
number = 4,
doi = {10.1016/j.automatica.2013.06.002},
pages = {100-141}}
\end{filecontents*}
\bibliographystyle{plain}
\begin{document}
\begin{frontmatter}
\author[MyCity]{Marcus}\ead{[email protected]},
\address[MyCity]{My University, My address, My City}
\begin{abstract}
Hello, abstract!
\end{abstract}
\end{frontmatter}
\lipsum \cite{b}.
\bibliography{My.bib}
\end{document}
答案1
这个问题是一个 XY 问题,也是一个更普遍的问题的一个子集,即如何将任意元文本附加到文本。
例如,在第一个例子中,使用白色文本,并使用零宽度框来处理额外的间距。
显然,非白色的页面颜色(\pagecolor{black}
例如)会使白色文本可见。
另外,复制粘贴还会显示“胡言乱语”:
TheCcoaptCysroaiptgCyhortonipgC2tyh0ohrt2pei2g2Cy.mh0roti2Aapg22thyl.l.
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\newcommand\cmetatext{Copyright 2022. All Rights Reserved. }
\ExplSyntaxOn
\NewDocumentCommand { \cmeta } { s } {
\tl_set:Nx \l_tmpb_tl { \cmetatext }
\hbox_set:Nn \l_tmpb_box { \l_tmpb_tl }
\IfBooleanF { #1 }
{
\box_set_wd:Nn
\l_tmpb_box
{ 0pt }
}
\group_begin:
\IfBooleanTF { #1 }
{
\color{blue}
}
{
\color{white}
}
\box_use:N \l_tmpb_box
\group_end:
}
\NewDocumentEnvironment { cmetaenv } { s +b } {
\tl_set:Nx \l_tmpa_tl { #2 }
\IfBooleanTF { #1 }
{
\regex_replace_all:nnN
{ (\S+) }
{ \0 \c{cmeta}* }
\l_tmpa_tl
}
{
\regex_replace_all:nnN
{ (\S+) }
{ \0 \c{cmeta} }
\l_tmpa_tl
}
\tl_use:N \l_tmpa_tl
}{}
\ExplSyntaxOff
\newcommand\test{The cat sat on the mat. }
\begin{document}
zero-width box, white text:
\begin{cmetaenv}
\test
\test
\test
\end{cmetaenv}
\test\cmeta\ xxx
\bigskip
natural-width box, blue text:
\begin{cmetaenv}*
\test
\test
\test
\end{cmetaenv}
\test\cmeta*\ xxx
\end{document}
但是,如果省略零宽度框和白色文本,而是将元文本字体缩放到 Infodot 大小,则会导致:
放大:
进一步放大:
复制粘贴的结果更加清晰:
TheCopyright 2022. All Rights Reserved. catCopyright 2022. All Rights Reserved. satCopyright 2022. All Rights Reserved. onCopyright 2022. All Rights Reserved. theCopyright 2022. All Rights Reserved. mat.Copyright 2022. All Rights Reserved. The
平均能量损失
\documentclass{article}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{NotoSerif}
\newfontface\infofont[Scale=0.001]{NotoSerif}
\newcommand\cmetatext{{\infofont Copyright 2022. All Rights Reserved. }}
\ExplSyntaxOn
\NewDocumentCommand { \cmeta } { s } {
\tl_set:Nx \l_tmpb_tl { \cmetatext }
\hbox_set:Nn \l_tmpb_box { \l_tmpb_tl }
\group_begin:
\IfBooleanTF { #1 }
{
\color{blue}
}
{
\color{white}
}
\box_use:N \l_tmpb_box
\group_end:
}
\NewDocumentEnvironment { cmetaenv } { s +b } {
\tl_set:Nx \l_tmpa_tl { #2 }
\IfBooleanTF { #1 }
{
\regex_replace_all:nnN
{ (\S+) }
{ \0 \c{cmeta}* }
\l_tmpa_tl
}
{
\regex_replace_all:nnN
{ (\S+) }
{ \0 \c{cmeta} }
\l_tmpa_tl
}
\tl_use:N \l_tmpa_tl
}{}
\ExplSyntaxOff
\newcommand\test{The cat sat on the mat. }
\begin{document}
natural-width box, white text:
\begin{cmetaenv}
\test
\test
\test
\end{cmetaenv}
\test\cmeta\ xxx
\bigskip
natural-width box, blue text:
\begin{cmetaenv}*
\test
\test
\test
\end{cmetaenv}
\test\cmeta*\ xxx
\end{document}
使用任何方法试图剥夺他人的归属和所有权都是不建议的,这表明缺乏学术能力。
在用例方面,元文本允许创建三维文本,其中一个文档可以是一个整个库。