Gostaria de definir uma macro que tenha no máximo um token de comprimento.
\w
é a macro e qualquer coisa depois de w não é tratada como parte do nome da macro. \wTest
é o mesmo que \w Test
. Eu não me importo se nenhuma outra macro começar comcestão bagunçados (pelo menos no meu documento, já que não uso nenhum). Obviamente não deve interferir em outros pacotes.
Alternativamente, se não for possível fazê-lo, gostaria de poder redefinir algum caractere especial como ^
ou |
para fazer o trabalho. Eu, digamos, possivelmente gostaria de usá-lo sem o .
Então, suponha que eu queira |
digitar algo
\documentclass{article}
\def\|{hello\,}
\begin{document}
\|world
\end{document}
Mas prefiro fazer |world. (meu documento é tão simples com apenas duas ou três macros especiais que será muito mais lógico reduzir essas marcações à representação mais simples possível. Eu, por exemplo, nunca usarei |
ou ^
em meu documento de maneira normal, então eu posso usá-los para representar alguma marcação, eu só tenho que lidar com como o tex os interpreta). Não há risco em meu próprio documento, pois é um texto plano ou muito poucas macros tex/latex (eu uso \vspace e \hspace e alguns). ambientes simples, como centralização junto com 3 de minhas próprias macros para marcar o texto simples).
por exemplo,
talvez eu tenha
This is a |test paragraph^.
\begin{center} and this^ is |centered \end{center}
onde | e ^ pode ser uma marcação bastante complexa (longa) que confunde o parágrafo original. na verdade, seria bom até mesmo se livrar dos ambientes:
This is a |test paragraph^.
<and this^ is |centered>
(observe como o segundo é muito mais legível que o primeiro)
Responder1
Acho que sua primeira sugestão (uma macro chamada \w
assim \wTest
e tratada da mesma forma que \w Test
) exigiria muitos hackers. Para o segundo você só precisa definir o catcode do caractere relevante como \active
.
\documentclass{article}
\catcode`|=\active
\def|{abc}
\begin{document}
|
\end{document}
Responder2
Você deveria abandonar sua ideia de um comando de símbolo único \w
: você teria que mudar o \catcode
w e isso não afetaria apenas os comandos quecomeçarcom w, mas todos os comandos com w em seus nomes podem ter efeitos colaterais bastante surpreendentes, mesmo que o seu documento em si não contenha nenhum w:
\documentclass{article}
\begin{document}
\catcode`\w=12
\tableofcontents
\section{abc}
\end{document}
O mesmo se aplica às suas outras ideias: não basta ter certeza de que você nunca digitará um símbolo específico. Você também deve ter certeza de que nenhum arquivo externo (como um toc, o aux, o lof, o bbl, ....) o utilize.
Responder3
Se você estiver usando LuaTeX, então é possível interceptar o arquivo de texto antes que ele seja visto pelo mecanismo de composição. Por exemplo, no ConTeXt você poderia usar o seguinte:
\usemodule[translate]
\def\wTest{default}
\translateinput[\string\w][Something else ]
\starttext
\wTest
\enableinputtranslation
\wTest \crlf
\wAgain
\disableinputtranslation
\wTest
\stoptext
que dá
Verportando o módulo luatex/ConTeXt "translate" para luaLaTeXpara uma porta do translate
módulo para luaLaTeX.
Responder4
seria melhor escolher um caractere não alfabético, que ainda não seja usado para outra coisa ou apenas em situações especiais.
|
é usado (em pares) para abreviação literal por alguns pacotes, mas se você não precisar disso, é um candidato razoável. +
, <
ou >
podem ser bons candidatos. se você nunca precisar de comandos ou ambientes de látex com estrela, existe *
.
eu aconselho ficar longe destes: ~
, #
, $
, @
, , %
, ^
, _
e claro \
.
É provável que o plain tex seja muito mais indulgente que o latex, mas é claro que você não tem a vantagem dos pacotes existentes.