我正在尝试以编程方式从一些组成字符串生成一个章节标题。简化的 MWE 只是将它们连接起来(实时系统将进行更复杂的处理),但我得到了前导零和中间字符 ˙" (x3F 22)。输入文件是 UTF8 编码的,但 MWE 字符串应该只能是 ASCII。
梅威瑟:
\documentclass[a4paper, 11pt, twoside, onecolumn, dvipsnames, final]{memoir}%
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}%
\usepackage{luacode,luatexbase}
\directlua{dofile("TexMacros.lua")}
\newcommand{\Bsection[3]}{\directlua{Bsection(#1,#2,#3)}} % This defines the tex macro
\begin{document}
\chapter{Chapter the first}
\Bsection{"Section pre-text"}{"T"}{"Section post-text"}
\section{\Bsection{"String pre-text"}{"T"}{"String post-text"}}
\end{document}
TexMacros.lua文件中的相关函数为:
function Bsection(s, sb, sc)
local t=""
t = t..s..sb..sc
t = string.gsub(t, "[\192-\255][\128-\191]*", "")
tex.sprint(t)
return t
end
输出:
Chapter 1
Chapter the first
0Section pre-textT"Section post-text"
1.10String pre-textT"String post-text"
答案1
你的语法\newcommand
错了,你想要
\newcommand{\Bsection}[3]{\directlua{Bsection(#1,#2,#3)}} % This defines the tex macro
不是
\newcommand{\Bsection[3]}{\directlua{Bsection(#1,#2,#3)}} % This defines the tex macro