TeX 命令和货币符号

TeX 命令和货币符号

为什么代码

\documentclass{memoir}
\usepackage[latin1]{inputenc}
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\def£#1£{``#1''}
\def€#1€{<#1>}
\begin{document}
Hi, £this£ is nice, and €this€ is beautiful
\end{document}

工作,而代码

\documentclass{memoir}
\usepackage[latin1]{inputenc}
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\def /#1/{``#1''}
\def this #1 crashes{<#1>}
\begin{document}
Hi, /this/ is nice, and this this crashes is beautiful
\end{document}

才不是?

答案1

问题是£积极的字符,因此适合被\def激活。/字符则不然。要做到这一点,您可以调整其 catcode 以使其处于活动状态。以下方法可行。

\documentclass{memoir}
\usepackage[latin1]{inputenc}
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\catcode`/=13
\def /#1/{``#1''}
\begin{document}
/this/
\end{document}

第二个示例的第二部分没有意义,因为thiscrashes不是单个字符。即使你将它们简化为单个字母字符,你仍然会处于危险境地。例如,以下内容有效:

\documentclass{memoir}
\usepackage[latin1]{inputenc}
\usepackage[danish]{babel}
\usepackage[T1]{fontenc}
\catcode`q=13
\def q#1q{``#1''}
\begin{document}
qgq
\end{document}

d但如果你用q

\catcode`d=13

那么您突然无法\def再使用该命令,因为它包含d

相关内容