
Estou tentando desesperadamente fazer \titlecap
impressã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 \titlecap
e 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 \relax
override. A terceira é como fazer quando a palavra não faz parte da primeira palavra do argumento. Os últimos shows \textnc
funcionam 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}
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 s
letras 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 s
ocorre também a supressão da capitalização
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.