
lua(build_filter)의 lualatex 콜백 중 하나에서 함수의 첫 번째 인수를 인쇄합니다.
\begin{luacode}
function f(a)
tex.print(a)
end
luatexbase.add_to_callback("buildpage_filter",f,"build_filter")
\end{luacode}
하지만 컴파일하는 동안 오류가 발생합니다.
! Missing $ inserted.
<inserted text>
$
좋아, 변수에 a
수학 모드에서 사용되는 문자가 있을 수 있다는 것을 알고 있지만 텍스트 모드에서 어떻게 인쇄할 수 있나요?
답변1
항상 조각이 아닌 사용 가능한 테스트 파일을 제공하십시오.
buildpage_filter
고정된 문자열 목록 중 하나를 인수로 가져오며 그 중 일부는 after_output
밑줄을 포함하므로 해당 문자열을 문서에 삽입하는 경우 tex.print
기본이 아닌 catcode 테이블을 사용해야 합니다.
가능한 서명 중 하나는 다음과 tex.print
같습니다.
tex.print(<number> n, <string> s, ...)
n
문자열을 인쇄하는 데 사용되는 catcode 테이블의 번호는 어디에 있습니까 s
? 음수로 식별되는 두 개의 특수 catcode 테이블이 있습니다.
n = -1
: 현재 활성화된 catcode 체계를 사용합니다.n = -2
: 와 동일한 catcode를 사용합니다\the\toks
. 즉, 모든 문자에는 catcode 12가 있고 공백에는 catcode 10이 있습니다.