我在使用的类文件中使用了 bidishadowtext。此包不允许文本中出现任何换行符,因此我尝试变聪明,并定义一个命令,给定一个带有\nl
内部的标题,该命令会将字符串一分为二,应用于bidishadowtext
两者,然后将它们重新连接在一起。
为此,我找到了xstring
,因为我很疯狂,所以我决定试试运气。这就是我取得的进展:
\usepackage{xstring}
\def\nl{!!NL!!}
\verbtocs{\mynl}|}}\\\bidishadowtext{\textsc{|
\verbtocs{\myEnd}|}}|
\verbtocs{\myBegin}|\bidishadowtext{\textsc{|
\newcommand{\formatTitle}[1]{
\IfSubStr{#1}{!!NL!!}{
\def\myTitle{\StrSubstitute{#1}{!!NL!!}{\mynl}}
\StrExpand[3]{\myTitle}{\xTitle}
\scancs{\theTitle}{\myBegin\xTitle\myEnd}
\theTitle
}%
{%
\bidishadowtext{\textsc{#1}}
}
}
我很高兴能直接解决我原来的问题,或者修复这个代码(我也很想学习如何解决这个问题)。
编辑:这是为了在重新定义的实施中使用\chapter
,所以我不希望最终用户真正了解发生了什么。