최대 하나의 토큰 길이를 갖는 매크로를 정의하고 싶습니다.
\w
는 매크로이고 w 이후의 모든 항목은 매크로 이름의 일부로 처리되지 않습니다. \wTest
와 같다\w Test
. 다음으로 시작하는 다른 매크로가 없어도 상관없습니다.승(적어도 내 문서에서는 아무것도 사용하지 않기 때문에) 엉망입니다. 분명히 다른 패키지를 방해해서는 안됩니다.
^
또는 그렇게 할 수 없다면 또는 |
작업을 수행하는 것과 같은 특수 문자를 재정의할 수 있으면 좋겠습니다 . .
그럼 내가 |
뭔가를 입력하고 싶다고 가정해 봅시다
\documentclass{article}
\def\|{hello\,}
\begin{document}
\|world
\end{document}
하지만 나는 |world를 하고 싶습니다. (내 문서는 두세 개의 특수 매크로만으로 매우 간단하므로 이러한 마크업을 가능한 가장 간단한 표현으로 줄이는 것이 훨씬 더 논리적입니다. 예를 들어 나는 내 문서에서 일반적인 방법으로 |
또는 를 절대 사용하지 않을 것입니다. ^
일부 마크업을 표현하는 데 사용할 수 있습니다. tex가 이를 해석하는 방법만 처리하면 됩니다.) 내 문서는 평면 텍스트이거나 매우 적은 tex/latex 매크로이므로 위험이 없습니다(저는 \vspace 및 \hspace와 몇 가지를 사용합니다). 일반 텍스트를 표시하기 위한 3개의 매크로와 함께 중앙 정렬과 같은 간단한 환경)
예:
그럴 수도 있겠네요
This is a |test paragraph^.
\begin{center} and this^ is |centered \end{center}
어디 | 그리고 ^는 원래 단락을 어수선하게 만드는 다소 복잡한(긴) 마크업일 수 있습니다. 사실, 환경을 제거하는 것조차 좋을 것입니다.
This is a |test paragraph^.
<and this^ is |centered>
(두 번째 것이 첫 번째 것보다 훨씬 더 읽기 쉽다는 점에 주목하세요)
답변1
내 생각에 당신의 첫 번째 제안( 와 동일하게 취급 \w
되는 매크로 )에는 많은 해킹이 필요할 것 같습니다. 두 번째로 관련 문자의 catcode를 로 설정하면 됩니다 .\wTest
\w Test
\active
\documentclass{article}
\catcode`|=\active
\def|{abc}
\begin{document}
|
\end{document}
답변2
단일 기호 명령에 대한 아이디어를 버려야 합니다 \w
. w의 명령을 변경해야 하며 \catcode
이는 명령에만 영향을 미치는 것이 아닙니다.시작w를 사용하지만 이름에 w가 있는 모든 명령은 문서 자체에 w가 포함되어 있지 않더라도 매우 놀라운 부작용을 가질 수 있습니다.
\documentclass{article}
\begin{document}
\catcode`\w=12
\tableofcontents
\section{abc}
\end{document}
다른 아이디어에도 마찬가지입니다. 특정 기호를 절대 입력하지 않을 것이라고 확신하는 것만으로는 충분하지 않습니다. 또한 외부 파일(예: toc, aux, lof, bbl 등)이 이를 사용하지 않는지 확인해야 합니다.
답변3
LuaTeX를 사용하는 경우 조판 엔진이 보기 전에 텍스트 파일을 가로챌 수 있습니다. 예를 들어 ConTeXt에서는 다음을 사용할 수 있습니다.
\usemodule[translate]
\def\wTest{default}
\translateinput[\string\w][Something else ]
\starttext
\wTest
\enableinputtranslation
\wTest \crlf
\wAgain
\disableinputtranslation
\wTest
\stoptext
이는
보다luatex/ConTeXt 모듈을 luaLaTeX로 "번역" 포팅luaLaTeX에 대한 모듈 포트입니다 translate
.
답변4
아직 다른 용도로 사용되지 않거나 특수한 상황에서만 사용되는 알파벳이 아닌 문자를 선택하는 것이 가장 좋습니다.
|
일부 패키지에서는 축어적으로 약어로 (쌍으로) 사용되지만, 필요하지 않은 경우 합리적인 후보입니다. +
, <
또는 >
좋은 후보가 될 수 있습니다. 별표가 붙은 라텍스 명령이나 환경이 필요하지 않다면 *
.
다음 항목은 멀리하는 것이 좋습니다: ~
, #
, $
, @
, , %
, ^
, _
그리고 물론 \
.
일반 텍스는 라텍스보다 훨씬 더 관대할 수 있지만 물론 기존 패키지의 이점은 없습니다.