我使用包\titlecap
中的宏titlecaps
将文本转换为标题大写。我还想在转换后的文本中进行简单的字体样式更改。
下面的示例代码不能编译:
\documentclass{article}
\usepackage{titlecaps}
\begin{document}
\Resetlcwords
\Addlcwords{for a is but and with of in as the etc on to if}
\titlecap{An interesting \textsf{corollary} is a good corollary}.
\end{document}
我怎样才能\titlecap
通过简单的字体样式更改来完成工作?
编辑
Steven 的补丁适用于这个简单的例子。然而,在我实际使用这个titling
混合包时,我仍然遇到一个问题。
例如:
\documentclass{article}
\usepackage{titling}
\postdate{
\centerline{\thetitle}
}
\usepackage{titlecaps}
\Resetlcwords
\Addlcwords{for a is but and with of in as the etc on to if}
\title{
\titlecap{An \textbf{interesting} \textsf{c\"orollary} is the \"only good c\"orollary}
}
\author{First Author}
\begin{document}
\maketitle
Hello world.
\end{document}
编译时出现“Extra },或忘记了 \endgroup。”错误,无法进行字体更改,并且会产生多余的字符:
答案1
似乎随着时间的推移,包titlecaps
与包之间交互的方式ifthen
发生了变化……titlecaps
传递给\ifthenelse
语句的某些标记现在导致了错误。
我当然不会责怪ifthen
,但我发现我需要用\ifthenelse
重新表述的普通 Tex\ifx
调用替换某些调用。在调试过程中,我还意识到,我大量使用的\protected@edef
可以通过选择性扩展得到更好的服务。
最重要的是,我确实需要重新审视并修改该titlecaps
软件包以将其清理干净。已进行修订并上传至 CTAN,版本为 1.3 [2022-04-12] (https://ctan.org/pkg/titlecaps)。使用该软件包的修订版本,以下 MWE 可按预期工作:
\documentclass{article}
\usepackage{titlecaps}
\begin{document}
\Resetlcwords
\Addlcwords{for a is but and with of in as the etc on to if}
\titlecap{An interesting \textsf{c\"orollary} is the \"only good c\"orollary}.
\end{document}
补充
至于编辑\postdate
ED 问题,OP 的 MWE 有错误……显然,如果不指定\predate
和,则无法使用\date
。完成此操作后,标题确实可以通过正确呈现titlecaps
,但\postdate
指定为的\centerline{\thetitle}
最终被 scrogged。这种 scrogging 的原因是\thetitle
最终插入了许多\protect
宏,这些宏与 titlecaps 逻辑交互不佳。
解决方案是将\titlecap
调用保存到它自己的中\def
,如下所示,并在需要执行时\mydef
使用。\mydef
\documentclass{article}
\def\mydef{%
\titlecap{An \textbf{interesting} \textsf{c\"orollary} is the \"only good
c\"orollary}}
\usepackage{titling}
\predate{}
\date{}
\postdate{\centerline{\mydef}}
\usepackage{titlecaps}
\Resetlcwords
\Addlcwords{for a is but and with of in as the etc on to if}
\title{\mydef}
\author{First Author}
\begin{document}
\maketitle
Hello world.
\end{document}