
Estoy tratando desesperadamente de \titlecap
imprimirsecuencia a secuenciacomoSecuencia a secuencia.
Sin embargo, agregar la palabra "a" a la lista de palabras en minúsculas (es decir, \Addlcwords
) no parece ser suficiente; las excepciones definidas parecen ignorarse para las palabras con guiones, lo que lleva aSecuencia a secuencia.
¿Hay alguna opción disponible para lograr el resultado antes mencionado?
MVE:
\documentclass{article}
\usepackage{titlecaps}
\Addlcwords{to}
\begin{document}
\titlecap{sequence-to-sequence}
\end{document}
Respuesta1
He mirado para ver por qué esto se comporta de esta manera (verAPÉNDICE). Uno hubiera esperado que agregarlo a la lista de minúsculas fuera suficiente (no he visto el código por un tiempo). Mientras tanto... ¿cómo anular ese comportamiento?
Normalmente, incluirías el "to" en \textnc{to}
, lo que significa "sin cambios", lo que anula el imperativo de mayúsculas dentro de a \titlecap
y no hace nada fuera de él. Sin embargo, en su ejemplo particular, la palabra sequence-to-sequence
es la primera palabra del argumento, que se trata de manera especial (se escribe en mayúscula incluso si está en la lista de minúsculas).
Por lo tanto, necesita un enfoque diferente... Consulte la página 3 de los documentos: "Para evitar que una palabra tenga título (para forzarla a estar en minúsculas), puede ir precedida inmediatamente por un \relax
. De esta manera, \relax
se titula , en lugar de la siguiente palabra. Este método se puede utilizar para excepciones únicas a los títulos o para superar el problema de las llaves descrito anteriormente, como en \{\relax if\}
".
La primera línea lo muestra sin guiones. La 2da línea es el caso presentado por el OP, con la \relax
anulación. El tercero es cómo hacerlo cuando la palabra no forma parte de la primera palabra del argumento. El último muestra \textnc
trabajando fuera de \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}
APÉNDICE
Bueno, resulta que, si bien el código puede activar el uso de mayúsculas después de conectar símbolos como [
, (
, -
, etc. (que es lo que estaba haciendo y que no te gustó), la única forma de usar la lista de palabras en minúsculas para evitar el uso de mayúsculas -to-
en su ejemplo (en teoría, más adelante) es si definió una palabra en minúscula como sequencetosequence
. Pero esto tampoco le da lo que desea, porque impediría que las s
letras se escriban en mayúscula, junto con el to
.
Este comportamiento extraño se produce porque el método utilizado por el paquete es descartar (ignorar) los caracteres de símbolos como (
, [
, etc. como parte de la búsqueda de palabras en minúsculas.
Sin embargo, hay una complicación adicional y es que descubro que el guión -
en particular no está eliminado como los otros símbolos. Tendré que mirar más de cerca para decidir si tenía una razón válida para hacer esa excepción.
Puedo decir que, si uno quisiera tratar el guión como lo hace con los paréntesis, corchetes, etc., podría hacerse de esta manera:
\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}
Sin embargo, como señalé anteriormente, este tampoco es el resultado deseado porque s
también se produce la supresión de la capitalización.
Lo que busque estará determinado por si puedo realizar una nueva búsqueda de palabras en minúsculas siguiendo los símbolos no alfabéticos. Supongo que ya intenté hacerlo sin éxito durante el diseño del paquete. Sin embargo, si se presenta una solución, actualizaré el paquete.