如何在 pdfmarkupcomment 中强制执行最小高度?

如何在 pdfmarkupcomment 中强制执行最小高度?

请考虑以下示例:

\documentclass{article}
\usepackage{pdfcomment}
\begin{document}
  \pdfmarkupcomment[markup=Highlight]{aa}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{AA}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{gg}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{Ag}{Highlight}
\end{document}

不同的高亮标记有不同的高度。通常,许多 pdf 阅读器为这三种类型生成后一种高度。

我可以强制使用最小后者的高度是多少?

(它仍应适当增加其他非标准字母(如变音符号)的高度,例如Ä。)

我尝试了这个height选项。但这似乎对标记没有影响。

ps. 您可能需要编译几次才能正确看到突出显示(https://tex.stackexchange.com/q/330276/36836)。

答案1

你可以修补\pdfmarkupcomment,以便每次出现#2都变成\strut#2

\documentclass{article}
\usepackage{pdfcomment}
\usepackage{regexpatch}

\makeatletter
\xpatchcmd*{\pdfmarkupcomment}
 {#2}
 {\strut#2}
 {}{}
\makeatother

\begin{document}
  \pdfmarkupcomment[markup=Highlight]{aa}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{AA}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{gg}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{Ag}{Highlight}
\end{document}

但要注意,这适用于\strut任何地方,而不仅仅是当一些标记注释彼此靠近时。

替代修补:

\documentclass{article}
\usepackage{pdfcomment}
\usepackage{letltxmacro}

\LetLtxMacro\originalpdfmarkupcomment\pdfmarkupcomment
\renewcommand{\pdfmarkupcomment}[3][]{%
  \originalpdfmarkupcomment[#1]{\strut#2}{#3}%
}

\begin{document}
  \pdfmarkupcomment[markup=Highlight]{aa}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{AA}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{gg}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{Ag}{Highlight}
\end{document}

在此处输入图片描述

您可以使用大写字母的高度和 y 的深度,但请注意大写字母通常会超出范围:

\documentclass{article}
\usepackage{pdfcomment}
\usepackage{letltxmacro}

\LetLtxMacro\originalpdfmarkupcomment\pdfmarkupcomment
\renewcommand{\pdfmarkupcomment}[3][]{%
  \originalpdfmarkupcomment[#1]{%
    \hbox{\vrule height \fontcharht\font`A depth \fontchardp\font`y width 0pt}%
    #2%
  }{#3}%
}

\begin{document}
  \pdfmarkupcomment[markup=Highlight]{aa}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{AA}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{gg}{Highlight}
  \pdfmarkupcomment[markup=Highlight]{Ag}{Highlight}
\end{document}

在此处输入图片描述

您可以使用以下方法修复过冲1.1\fontcharht\font`A,结果是

在此处输入图片描述

您可能希望对深度做类似的事情。

答案2

您可以简单地使用\strut来获取基线的高度。或者\boxheight像示例中那样定义您自己的基线。您必须在不带参数的宏中定义它,否则它将无法通过 使用的 SOUL 解析器pdfcomment

\documentclass{article}
\usepackage{pdfcomment}
\newcommand\pdfstrutmc[3][\strut ]%
{%
  \pdfmarkupcomment{#1#2}{#3}%
}%
\newcommand\boxheight{\raisebox{-3pt}{\rule{0pt}{15pt}}}
%
\begin{document}
  \pdfstrutmc{aa}{Highlight}
  \pdfstrutmc{AA}{Highlight}
  \pdfstrutmc{gg}{Highlight}
  \pdfstrutmc{Ag}{Highlight}

  \bigskip
  \pdfstrutmc[\boxheight]{Aa}{Highlight}
  \pdfstrutmc[\boxheight]{AA}{Highlight}
  \pdfstrutmc[\boxheight]{gg}{Highlight}
  \pdfstrutmc[\boxheight]{Ag}{Highlight}
\end{document}

pdfcomment 最小框高度

相关内容