titlecap – não coloque letras maiúsculas hifenizadas "para"

titlecap – não coloque letras maiúsculas hifenizadas "para"

Estou tentando desesperadamente fazer \titlecapimpressãosequência a sequênciacomoSequência a sequência.

No entanto, adicionar a palavra "to" à lista de palavras em minúsculas (ou seja, \Addlcwords) não parece ser suficiente, as exceções definidas parecem ser ignoradas para palavras hifenizadas - levando aSequência a sequência.

Existem opções disponíveis para alcançar o resultado acima mencionado?

MVE:

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

Responder1

Eu procurei ver por que isso se comporta dessa maneira (vejaTERMO ADITIVO). Seria de esperar que adicioná-lo à lista em minúsculas fosse suficiente (faz algum tempo que não vejo o código). Enquanto isso... como substituir tal comportamento?

Normalmente, você colocaria "to" em \textnc{to}, significando "sem alteração", que substitui o imperativo de capitalização dentro de a \titlecape não faz nada fora dele. No entanto, no seu exemplo específico, a palavra sequence-to-sequenceé a primeira palavra do argumento, que é tratada de maneira especial (ela fica em maiúscula mesmo se estiver na lista de letras minúsculas.

Então, você precisa de uma abordagem diferente...Veja a página 3 da documentação: "Para evitar que uma palavra seja intitulada (para forçá-la a ficar em minúscula), ela pode ser imediatamente precedida por um \relax. Desta forma, o \relaxé intitulado , em vez da palavra a seguir. Este método pode ser usado para exceções únicas à titulação ou para superar o problema de chaves descrito acima, como em \{\relax if\}."

A primeira linha mostra sem os hífens. A 2ª linha é o caso apresentado pelo OP, com \relaxoverride. A terceira é como fazer quando a palavra não faz parte da primeira palavra do argumento. Os últimos shows \textncfuncionam fora do \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}

insira a descrição da imagem aqui

TERMO ADITIVO

Bem, acontece que, embora o código possa acionar uma capitalização seguindo símbolos de conexão como [, (, -, etc. (que é o que ele estava fazendo e que você não gostou), a única maneira de usar a lista de palavras em minúsculas para impedir a capitalização de -to-no seu exemplo (em teoria, mais tarde) é se você definiu uma palavra minúscula como sequencetosequence. Mas isso também não dá o que você deseja, pois evitaria que as sletras fossem maiúsculas, junto com o to.

Esse comportamento estranho ocorre porque o método usado pelo pacote é filtrar (ignorar) os caracteres de símbolo, como (, [, etc., como parte da pesquisa de palavras em minúsculas.

Porém, há uma complicação adicional: descubro que o hífen, -em particular, não é filtrado como os outros símbolos. Terei que olhar mais de perto para decidir se tive uma razão válida para abrir essa exceção.

Posso dizer que, se alguém quisesse tratar o hífen como trata parênteses, colchetes, etc., poderia ser feito desta forma:

\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}

No entanto, como observei acima, este também não é o resultado desejado porque socorre também a supressão da capitalização

insira a descrição da imagem aqui

O que você procura será determinado pela capacidade de realizar uma nova pesquisa de palavras em minúsculas seguindo os símbolos não alfabéticos. Acho que já tentei fazer isso sem sucesso durante o design do pacote. Porém, se surgir uma solução, atualizarei o pacote.

informação relacionada