具有与 csquotes 的 MakeAutoQuote 类似机制的括号子句

具有与 csquotes 的 MakeAutoQuote 类似机制的括号子句

我有以下用于编写括号子句的宏:

\makeatletter
\newcommand\incise[1]{%
    ---\,#1%
    \@ifnextchar.\relax{\@ifnextchar?{\@ifnextchar!{\@ifnextchar:{\@ifnextchar;\relax{\,---}}}}}
}
\makeatother

但我想做与 csquote 包相同的事情。它使用活动字符而不是 latex 宏。

那么,在 LaTeX 中可以实现以下效果吗:

The main sentence -(the parenthetical clause)-.

转换为:

The main sentence \incise{the parenthetical clause}.

答案1

\catcode`*\active
\def*(#1)*{\incise{#1}}

按照你喜欢的方式行事*(xxxx)*,只要你不在*其他任何地方使用....

答案2

您可以使用 csquotes 命令 - 它们甚至可以处理 utf8 字符,而您不能直接使用\catcodeDavid 的技巧。主要问题是选择字符,这样您就不会对文档的其余部分产生副作用。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{csquotes,xcolor}

\makeatletter
\csq@addspecial{ä}{\begingroup---!ups\color{red}}{}{}%
\csq@addspecial{ö}{\endgroup!ups---}{}{}
\makeatother

 \begin{document}
 äblubö blabla 

 \end{document} 

相关内容