颜色环境影响间距

颜色环境影响间距

我想用彩色标记大型文档的修订部分,到目前为止一直使用

\usepackage{xcolor}
\newcommand\rev[1]{\textcolor{red}{#1}}

然后做

Lorem ipsum dolor \rev{git} amet, consetetur sadipscing elitr,

这种方法效果很好,但不幸的是,有时会影响字形的位置,例如,

\documentclass{article}

\setlength{\parindent}{0pt}

\usepackage{amsmath}                                                        
\usepackage{xcolor}
\newcommand\rev[1]{\textcolor{red}{#1}}

\begin{document}

AV\\
\rev{A}V

\begin{align}
&U \oplus V\\
&U \rev{\oplus} V
\end{align}

\end{document}

给出

AV 间距 正间距

为文档的某些部分着色的更好方法是什么?

答案1

  1. \special颜色通过 whatsits( , )实现\pdfliteral。这些将破坏隐式字距调整,如示例中所示AV

    LuaTeX 提供了一种通过属性而不是通过 whatsits 来实现完全不同的颜色实现方式。包luacolor采用了这种新方式。

  2. 数学中的问题有所不同。LaTeX 通过分组实现颜色。颜色在组开始时设置,并在组结束后通过 重置\aftergroup。但是\textcolor使用花括号代替 和\begingroup\endgroup花括号在数学中有副作用,它们\mathord像普通符号一样形成具有间距的子公式。请参阅回答,已在评论来自 ferahfeze。

luacolor如果同时使用包和使用\begingroup/\endgroup代替花括号,则问题的示例将起作用:

% lualatex
\documentclass[fleqn]{article}

\setlength{\parindent}{0pt}

\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{luacolor}
\newcommand\rev[1]{%
  \protect\leavevmode
  \begingroup
    \color{red}%
    #1%
  \endgroup
}
 
\begin{document}

AV\\
\rev{A}V
%
\begin{align*}
&U \oplus V\\
&U \rev{\oplus} V
\end{align*}

\end{document}

结果

包装细化xspace

\xspace检测}(通过\egroup)并抑制空格。但未\endgroup检测到。以下细化仅在数学模式下使用\begingroup\endgroup,其中空格无关紧要:

\documentclass[fleqn]{article}

\setlength{\parindent}{0pt}

\usepackage{amsmath}
\usepackage{xspace}
\usepackage{xcolor}
\usepackage{luacolor}
\newcommand*{\rev}{}
\DeclareRobustCommand{\rev}[1]{%
  \ifmmode
    \begingroup
      \color{red}%
      #1%
    \endgroup
  \else
    \textcolor{red}{#1}%
  \fi
}

\begin{document}

AV\\
\rev{A}V
%
\begin{align*}
&U \oplus V\\
&U \rev{\oplus} V
\end{align*}

\newcommand{\X}{X\xspace}
\X Y\\
\rev{\X} Y\\
$\X Y$\\
$\rev{\X} Y$

\end{document}

结果 xspace

答案2

我担心,“AV”的情况太复杂了。LaTeX 不会调整括号内的字距。它也不会调整不同字体(强调、粗体……)之间的字距。你可以读一读这里。相当困难,我没能解决您的问题。我希望,在您的工作中,只标记一个字母的情况并不常见。如果这真的让您感到困扰,您将不得不手动添加字距调整。

对于数学情况,您必须确保颜色不会将突出显示从数学模式更改为文本模式。我在下面添加了此解决方案。我希望会有更好的解决方案,但我感觉您应该在这里问第二个问题,关于如何正确\textcolor{red}{V}A调整字距\textcolor{red}{AV}A

% arara: pdflatex

\documentclass{article}
\usepackage{mathtools}                                                        
\usepackage{xcolor}

\newcommand*{\rev}[1]{%
  \protect\leavevmode
  \begingroup
    \color{red}#1%
  \endgroup
    }

\begin{document}
\centering
AV\\
\rev{A}\kern-0.26ex V
\begin{align}
&U \oplus V\\
&U \rev{\oplus} V
\end{align}
\end{document}

在此处输入图片描述

相关内容