停用活动字符的突起 `«

停用活动字符的突起 `«

是否可以microtype只针对某些字符停用 的突出功能?我正在尝试创建«#1»一个快捷方式,\fbox{#1}但除非我完全停用突出功能,否则它将不起作用。

% !TeX program = lualatex
\documentclass[ngerman]{article}

\usepackage{fontspec,unicode-math}
\usepackage[
%   protrusion = false,
]{microtype}

\catcode`« = \active
\def«#1»{
   \fbox{#1}
}

\begin{document}
   Test «Test» \fbox{Test}
\end{document}

我不需要输出中的 guillemets 字符。

答案1

您只会收到一个令人讨厌的警告,但主动角色可以发挥作用。

为了消除警告,请延迟激活。

\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{fontspec,unicode-math}
\usepackage[
%   protrusion = false,
]{microtype}

\protected\def\activeguill#1»{%
   \fbox{#1}%
}
\AtBeginDocument{%
  \begingroup\lccode`~=`« \lowercase{\endgroup\let~}\activeguill
  \catcode`«=\active
}

\begin{document}

Test «Test» \fbox{Test}

Test \fbox{Test} \fbox{Test}

\end{document}

但是,输出将与您的代码相同(前提是删除了虚假空格)。

在此处输入图片描述

相关内容