titlecap: no escriba en mayúscula "a" con guión

titlecap: no escriba en mayúscula "a" con guión

Estoy tratando desesperadamente de \titlecapimprimirsecuencia 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 \titlecapy no hace nada fuera de él. Sin embargo, en su ejemplo particular, la palabra sequence-to-sequencees 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, \relaxse 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 \relaxanulación. El tercero es cómo hacerlo cuando la palabra no forma parte de la primera palabra del argumento. El último muestra \textnctrabajando 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}

ingrese la descripción de la imagen aquí

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 sletras 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 stambién se produce la supresión de la capitalización.

ingrese la descripción de la imagen aquí

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.

información relacionada