Me gustaría definir una macro que tenga como máximo un token de longitud.
\w
es la macro y cualquier cosa después de w no se trata como parte del nombre de la macro. \wTest
es igual que\w Test
. No me importa si no hay otras macros que comiencen conwestán en mal estado (al menos en mi documento, ya que no uso ninguno). Obviamente no debería interferir con otros paquetes.
Alternativamente, si no es posible hacerlo, me gustaría poder redefinir algún carácter especial como ^
o |
para hacer el trabajo. Yo diría que posiblemente me gustaría usarlo sin el archivo .
Entonces supongamos que quiero |
escribir algo
\documentclass{article}
\def\|{hello\,}
\begin{document}
\|world
\end{document}
Pero prefiero hacer |world. (mi documento es tan simple con solo dos o tres macros especiales que hará mucho más lógico reducir estas marcas a la representación más simple posible. Yo, por ejemplo, nunca usaré |
o ^
en mi documento de manera normal, así que Puedo usarlos para representar algunas marcas. Solo tengo que lidiar con cómo los interpreta tex). No hay ningún riesgo en mi propio documento ya que es texto plano o muy pocas macros tex/latex (uso \vspace y \hspace y algunas. entornos simples como centrar junto con 3 de mis propias macros para marcar el texto sin formato).
p.ej,
puede que tenga
This is a |test paragraph^.
\begin{center} and this^ is |centered \end{center}
donde | y ^ podría ser un marcado bastante complejo (largo) que satura el párrafo original. de hecho, sería bueno incluso deshacerse de los entornos:
This is a |test paragraph^.
<and this^ is |centered>
(observe cómo el segundo es mucho más legible que el primero)
Respuesta1
Creo que su primera sugerencia (una macro llamada \w
así que \wTest
se trata de la misma manera que \w Test
) requeriría mucha piratería. Para el segundo, sólo tienes que establecer el código cat del carácter relevante en \active
.
\documentclass{article}
\catcode`|=\active
\def|{abc}
\begin{document}
|
\end{document}
Respuesta2
Deberías abandonar tu idea de un comando de un solo símbolo \w
: tendrías que cambiar el \catcode
de w y esto no solo afectaría a los comandos quecomenzarcon w pero todos los comandos con w en su nombre y pueden tener efectos secundarios bastante sorprendentes incluso si su documento en sí no contiene ninguna w:
\documentclass{article}
\begin{document}
\catcode`\w=12
\tableofcontents
\section{abc}
\end{document}
Lo mismo se aplica a sus otras ideas: no basta con estar seguro de que nunca escribirá un símbolo específico. También debes asegurarte de que ningún archivo externo (como un toc, un aux, un lof, un bbl, ....) lo utilice.
Respuesta3
Si está utilizando LuaTeX, entonces es posible interceptar el archivo de texto antes de que sea visto por el motor de composición. Por ejemplo, en ConTeXt podrías usar lo siguiente:
\usemodule[translate]
\def\wTest{default}
\translateinput[\string\w][Something else ]
\starttext
\wTest
\enableinputtranslation
\wTest \crlf
\wAgain
\disableinputtranslation
\wTest
\stoptext
lo que da
Verportar el módulo luatex/ConTeXt "traducir" a luaLaTeXpara un puerto del translate
módulo a luaLaTeX.
Respuesta4
Lo mejor sería elegir un carácter no alfabético, uno que no se utilice ya para otra cosa, o sólo en situaciones especiales.
|
se utiliza (en pares) como taquigrafía textual en algunos paquetes, pero si no lo necesita, es un candidato razonable. +
, <
o >
podrían ser buenos candidatos. Si nunca necesitas comandos o entornos de látex con estrellas, los tienes *
.
Recomiendo mantenerse alejado de estos: ~
, #
, $
, @
, %
, ^
, _
y por supuesto \
.
Es probable que el texto simple sea mucho más indulgente que el látex, pero, por supuesto, entonces no tienes la ventaja de los paquetes existentes.