한 문자 매크로

한 문자 매크로

최대 하나의 토큰 길이를 갖는 매크로를 정의하고 싶습니다.

\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

아직 다른 용도로 사용되지 않거나 특수한 상황에서만 사용되는 알파벳이 아닌 문자를 선택하는 것이 가장 좋습니다.

|일부 패키지에서는 축어적으로 약어로 (쌍으로) 사용되지만, 필요하지 않은 경우 합리적인 후보입니다. +, <또는 >좋은 후보가 될 수 있습니다. 별표가 붙은 라텍스 명령이나 환경이 필요하지 않다면 *.

다음 항목은 멀리하는 것이 좋습니다: ~, #, $, @, , %, ^, _그리고 물론 \.

일반 텍스는 라텍스보다 훨씬 더 관대할 수 있지만 물론 기존 패키지의 이점은 없습니다.

관련 정보