如果我想匿名化我为审阅而撰写的论文,我不仅仅想从作者字段中删除我的名字。我想用一个与大写字母一样高、与我的名字一样长的规则来替换我的名字。这样,看起来我的名字就被从历史记录中删掉了。(我其实不会这样做……)以下是 MWE:
\documentclass[12pt]{article}
\usepackage{lipsum}
\newlength\namelength
\settowidth\namelength{Seamus Bradley}
\title{A paper with no author}
\author{\rule{\namelength}{12pt}}
\begin{document}
\maketitle
\lipsum
\end{document}
现在问题来了。我该如何定义一个\lengthof
宏来查看其参数然后将其扩展为该长度?由于您不能将 a 放在\settowidth
a 里面\rule
(或者我尝试时它不起作用),所以这并不像我想象的那么简单……
有办法做到这一点吗?或者没有好方法可以做到这一点的充分理由是什么?
答案1
首先让我回答标题中的问题:您不能将宏扩展为其参数的宽度/长度,因为您需要为此进行分配。
在其他答案(都很好)\widthof
的论点中起作用的原因是,它使用了解析其论点的版本并且不需要可扩展性。\rule
calc
\setlength
因此,我假设您可能不介意这一点,只想获取某些文本的宽度。所有提到的宏都只是将参数放入 TeX 框中,然后对其使用 、\ht
或\dp
分别\wd
获取高度、深度和宽度。如果您需要其中多个,自己框定内容会更有效率(请参阅 Herbert 更新的答案)。
这是我的解决方案,修改普通\phantom
宏以生成规则,而不是通常的空框。这样做的好处是,它重新使用现有\phantom
代码,以便在数学模式下也能正常工作。
\documentclass{article}
\makeatletter
\def\rulephantom#1{%
\begingroup
\def\finph@nt{\vrule\@width\wd\z@\@height\ht\z@\@depth\dp\z@}%
\phantom{#1}%
\endgroup
}
\makeatother
\parindent=0pt
\begin{document}
Text
\rulephantom{Text} Text
\rulephantom{Text\strut} Text
$ \rulephantom{Text} Text $
\end{document}
答案2
\documentclass[12pt]{article}
\usepackage{calc}
\usepackage{lipsum}
\newcommand*{\anonauthor}[1]{\rule{\widthof{#1}}{\totalheightof{#1}}}
\title{A paper with no author}
\author{\anonauthor{Seamus Bradley}}
\begin{document}
\maketitle
\lipsum
\end{document}
编辑:Herbert 速度更快。但是,\totalheigthof
将使规则的高度与基本字体大小成比例(如果这对您很重要)。
编辑 2:具有正确垂直对齐的宏变体(效率低下?):
\newcommand*{\anonauthor}[1]{\rule[\depthof{#1}*{-1}]{\widthof{#1}}{\totalheightof{#1}}}
答案3
在你的情况下,这可能有点过头了,但还有censor
使用以下命令生成这些条的包\censor
:
\documentclass[12pt]{article}
\usepackage{lipsum}
\usepackage{censor}
\title{A paper with no author}
\author{\censor{Seamus Bradley}}
\begin{document}
\maketitle
\lipsum
\end{document}
答案4
\documentclass[12pt]{article}
\usepackage{calc}
\newsavebox\TBox
\def\phantomrule#1{\sbox\TBox{#1}\rule[-\dp\TBox]{\wd\TBox}{\ht\TBox+\dp\TBox}}
\title{A paper with no author}
\author{\phantomrule{Seamus Bradley}By}
\begin{document}
\maketitle
\end{document}