titlecap – ハイフンでつながれた「to」を大文字にしない

titlecap – ハイフンでつながれた「to」を大文字にしない

私は必死に\titlecap印刷をしようとしているシーケンスからシーケンスへとしてシーケンスからシーケンスへ

しかし、小文字の単語リストに「to」という単語を追加するだけでは\Addlcwords不十分のようです(つまり、 )。定義された例外はハイフンでつながれた単語では無視されるようです。シーケンスからシーケンスへ

上記の結果を達成するために利用できるオプションはありますか?

MVE:

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

答え1

なぜこのような動作をするのか調べてみました(付録)。小文字のリストに追加するだけで十分であることを期待していました (しばらくコードを見ていません)。その間...このような動作をオーバーライドするにはどうすればよいでしょうか?

通常、「to」を で囲みます。\textnc{to}これは「変更なし」を意味し、 内の大文字化命令を無効にし\titlecap、 の外側では何も行いません。ただし、この例では、 という単語sequence-to-sequenceが引数の最初の単語であり、特別に扱われます (小文字のリストにある場合でも大文字になります)。

したがって、別のアプローチが必要です...ドキュメントの 3 ページを参照してください。「単語にタイトルが付けられないようにする (強制的に小文字にする) には、単語の直前に を置くことができます\relax。この方法では、\relax後続の単語ではなく にタイトルが付けられます。この方法は、タイトル付けの 1 回限りの例外に使用したり、 のように、上記の中括弧の問題を解決したりするために使用できます\{\relax if\}。」

1 行目はハイフンなしで示しています。2 行目は、OP が提示した、オーバーライドを使用したケースです\relax。3 行目は、単語が引数の最初の単語の一部ではない場合にそれを実行する方法です。最後は、\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-sequencetosequencesto

この奇妙な動作は、パッケージが小文字の単語検索の一部として、、など(の記号文字を除外 (無視) する方法を使用しているために発生します。[

しかし、さらに複雑な点があり、特にハイフンは-他の記号のように除外されていないことがわかりました。その例外を設ける正当な理由があったかどうかを判断するには、さらに詳しく調べる必要があります。

ハイフンを括弧や角括弧などと同じように扱いたい場合は、次のようにすればよいと言えます。

\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しかし、上で述べたように、大文字化の抑制も起こるため、これも望ましい結果ではありません。

ここに画像の説明を入力してください

あなたが探しているものは、アルファベット以外の記号に続く新しい小文字の単語検索を実行できるかどうかによって決まります。パッケージ設計中にすでにそれを試しましたが、失敗したと思います。ただし、解決策が見つかった場合は、パッケージを更新します。

関連情報