titlecap – 不要將連字符「to」大寫

titlecap – 不要將連字符「to」大寫

我正在拼命嘗試\titlecap印刷序列到序列作為序列到序列

然而,將單字“to”添加到小寫單字列表(即,\Addlcwords)似乎還不夠,對於連字符單詞,定義的例外似乎被忽略 - 導致序列到序列

是否有任何選擇可以實現上述結果?

微血管病變:

\documentclass{article}
\usepackage{titlecaps}
\Addlcwords{to}
\begin{document}
    \titlecap{sequence-to-sequence}
\end{document}

答案1

我已經研究過為什麼會這樣(參見附錄)。人們希望將其添加到小寫清單中就足夠了(我有一段時間沒有查看程式碼了)。同時...如何克服這種行為?

通常,您會將“to”括在 中\textnc{to},表示“無變化”,這會覆蓋 a 內的大寫命令\titlecap,並且在 a 之外不執行任何操作。但是,在您的特定範例中,該單字sequence-to-sequence是參數的第一個單詞,它被特殊對待(即使它位於小寫列表中,它也會被大寫。

因此,您需要一種不同的方法......請參閱文件的第 3 頁:「為了防止單字被命名(強制其變為小寫),可以在它前面立即加上\relax。這樣,該\relax單字的標題就是,而不是後面的單詞,此方法可用於標題的一次性例外,或克服上述大括號問題,如 中所示\{\relax if\}

第一行顯示沒有連字符。第 2 行是 OP 提出的有覆蓋的情況\relax。第三個問題是當該單字不是參數的第一個單字的一部分時如何處理。最後一個顯示\textnc\titlecap.

\documentclass{article}
\usepackage{titlecaps}
\Addlcwords{to}
\begin{document}
\titlecap{sequence to sequence}% WITHOUT HYPHENS WORKS AS EXPECTED

\titlecap{sequence-\relax to-sequence}% PREPEND \relax FOR SPECIAL CASE EXCEPTIONS

\titlecap{a sequence-\textnc{to}-sequence}% ENCLOSE WITH \textnc

          a sequence-\textnc{to}-sequence
\end{document}

在此輸入影像描述

附錄

好吧,事實證明,雖然程式碼可以在諸如 、 、 等連接符號之後觸發大寫[(-是您不喜歡的做法),但使用小寫單字清單的唯一方法是防止您的範例中的大寫-to-(理論上,稍之後會詳細介紹)是如果您將小寫單字定義為sequencetosequence。但這也無法滿足您的需求,因為它會阻止s字母大寫以及to.

出現這種奇怪的行為是因為該套件使用的方法是在小寫單字搜尋中篩選(忽略)諸如(、等符號字元。[

不過,還有一個額外的複雜性,那就是我發現連字符,-特別是連字符,沒有像其他符號一樣被屏蔽掉。我必須更仔細地考慮,以確定我是否有正當理由做出例外。

我可以說,如果想像處理括號、方括號等一樣處理連字符,可以這樣做:

\documentclass{article}
\usepackage{titlecaps}
\makeatletter
% THESE ARE THE PUNCTUATION MARKS SCREENED OUT FOR 
% LOWER CASE WORD SEARCH
\renewcommand\kill@punct{%
\catcode`-=9 %
\catcode`.=9 %
\catcode`,=9 %
\catcode`:=9 %
\catcode`;=9 %
\catcode`(=9 %
\catcode`)=9 %
\catcode`[=9 %
\catcode`]=9 %
\catcode`?=9 %
\catcode`!=9 %
\catcode``=9 %
\catcode`'=9 %
}

\renewcommand\restore@punct{%
\catcode`-=12 %
\catcode`.=12 %
\catcode`,=12 %
\catcode`:=12 %
\catcode`;=12 %
\catcode`(=12 %
\catcode`)=12 %
\catcode`[=12 %
\catcode`]=12 %
\catcode`?=12 %
\catcode`!=12 %
\catcode``=12 %
\catcode`'=12 %
}
\makeatother
\Addlcwords{sequencetosequence}
\begin{document}
\titlecap[x]{sequence-to-sequence}
\end{document}

然而,正如我上面指出的,這也不是期望的結果,因為s也會發生大寫的抑制

在此輸入影像描述

您要尋找的內容將取決於我是否可以在非字母符號之後執行新的小寫單字搜尋。我猜我在包裝設計期間已經嘗試過這樣做,但沒有成功。但是,如果有解決方案出現,我將更新該軟體包。

相關內容