\hyperref 分隔符、括号、规范、使用 \left 和 \right 的圆括号(暂停 hyperref)

\hyperref 分隔符、括号、规范、使用 \left 和 \right 的圆括号(暂停 hyperref)

我希望\left\| \right\|_p将norm-symbol链接到其定义,但我不希望将其内部(例如x)链接到一起。(当然,我希望它们能够自动调整大小 - 这就是我使用\leftand 的原因\right

类似的东西\hyperref[def:norm1]{\left\| {\suspendHyperref #1} \continueHyperref \right\|_1 }就很棒了!(Firefox 内置的 pdf 阅读器会在鼠标悬停时突出显示链接 - 因此,如果\right_p我将鼠标移到\left\|Firefox 中的标准符号左侧时,标准符号的右侧也会突出显示,那就太棒了,但这不是我的首要任务)

至少类似的东西\hyperref[def:norm2]{\left\| } #1 \hyperref[def:norm2]{\right\|_2 }会相当不错,但是这行不通,\left因为\right形成了一个组(如这个帖子

以下 MWE 产生的结果看起来像我想要的那样,但链接不正确。特别是在方程 (1) 中,嵌套范数中的内部 l_2 范数没有正确链接(因为外部 l_1 范数内的所有内容都链接到 l_1 范数)。

\documentclass[a4paper,11pt]{report}
\usepackage[colorlinks=true]{hyperref}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{definition}[theorem]{Definition}

\newcommand{\normOne}[1]{\hyperref[def:norm1]{\left\| {\normalcolor #1} \right\|_1 }}
\newcommand{\normTwo}[1]{\hyperref[def:norm2]{\left\| {\normalcolor #1} \right\|_2 }}

\begin{document}

\begin{definition}[$\ell_1-Norm$]\label{def:norm1}
\[ \normOne{x} := \sum_{i=1}^{n} \left| x_i \right|  \]
\end{definition}
\begin{definition}[$\ell_2-Norm$]\label{def:norm2}
\[ \normTwo{x} := \left( \sum_{i=1}^{n} \left| x_i \right|^2 \right)^{\frac{1}{2}} \]
\end{definition}

many pages later...

\begin{equation}
\normOne{ \left( \normTwo{y} - 3 \right) \hat{A}x}
\end{equation}

\end{document}

在此处输入图片描述

也许其中一个答案是这个问题可以解决我的问题,但不幸的是我对所有这些解决方案的了解不够多,不知道如何正确采用它们。

答案1

我的解决方案的关键部分是:

\newcommand{\BracKern}{\kern-\nulldelimiterspace}%https://tex.stackexchange.com/a/54035/128042

\newcommand{\linkedBrac}[5][]{% #2,#4 = left/right bracket type; #5 = label of link-target; optional argument #1: one can insert something like \color{green} here 
        \mathopen{\hyperref[#5]{#1\left#2\vphantom{#3}\BracKern\right.}}% left bracket
        #3%  content
        \mathclose{\hyperref[#5]{#1\left.\BracKern\vphantom{#3}\right#4}}% right bracket
}

\newcommand{\normTwo}[1]{\linkedBrac{\|}{#1}{\|_2}{def:norm2}}
\newcommand{\floor}[1]{\linkedBrac[\color{green}]{\lfloor}{#1}{\rfloor}{eq:floor}}
\newcommand{\abs}[1]{\linkedBrac[\normalcolor]{|}{#1}{|}{def:absolutValue}}

我的代码的一个工作示例:

\documentclass[a4paper,11pt]{report}
\usepackage{amsmath}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}

\newtheorem{theorem}{Theorem}[section]
\newtheorem{definition}[theorem]{Definition}

\newcommand{\BracKern}{\kern-\nulldelimiterspace}%https://tex.stackexchange.com/a/54035/128042

\newcommand{\linkedBrac}[5][]{% #2,#4 = left/right bracket type; #5 = label of link-target; optional argument #1: one can insert something like \color{green} here 
        \mathopen{\hyperref[#5]{#1\left#2\vphantom{#3}\BracKern\right.}}% left bracket
        #3%  content
        \mathclose{\hyperref[#5]{#1\left.\BracKern\vphantom{#3}\right#4}}% right bracket
}%https://tex.stackexchange.com/questions/360507/hyperref-delimiters-brackets-norms-parenthesis-using-left-and-right-suspe

\newcommand{\normOne}[1]{\linkedBrac{\|}{#1}{\|_1}{def:norm1}}
\newcommand{\normTwo}[1]{\linkedBrac{\|}{#1}{\|_2}{def:norm2}}
\newcommand{\floor}[1]{\linkedBrac[\color{green}]{\lfloor}{#1}{\rfloor}{eq:floor}}
\newcommand{\ceil}[1]{\linkedBrac[\color{red}]{\lceil}{#1}{\rceil}{eq:ceil}}
\newcommand{\Sawtooth}[1]{\linkedBrac[\color{yellow}]{\{}{#1}{\}}{eq:Sawtooth}}
\newcommand{\abs}[1]{\linkedBrac[\normalcolor]{|}{#1}{|}{def:absolutValue}}

\begin{document}
\begin{definition}[absolut value]\label{def:absolutValue}
$ \abs{x}=\max (x,-x) $
\end{definition}
\begin{definition}[$\ell_1-Norm$]\label{def:norm1}
\[ \normOne{x} := \sum_{i=1}^{n} \abs{x_i} \]
\end{definition}
\begin{definition}[$\ell_2-Norm$]\label{def:norm2}
\[ \normTwo{x} := \left( \sum_{i=1}^{n} \abs{x_i}^2 \right)^{\frac{1}{2}} \]
\end{definition}
\begin{definition}[floor,ceil,Sawtooth function]
\begin{align}
\floor{x} := \max\lbrace z\in Z | z\leq x \rbrace \label{eq:floor}\\
\ceil{x} :=\min\left\lbrace z\in Z \middle| z\geq x \right\rbrace \label{eq:ceil}\\
\Sawtooth{x} := x - \floor{x} \label{eq:Sawtooth}
\end{align}
\end{definition}

many pages later...

\begin{align}
\normOne{ \floor{ \normTwo{y} - 3 } \hat{A}x}\\
\normOne{ \ceil{ \normTwo{y} - 3 } \hat{A}x}\\
\Sawtooth{\normOne{ \left( \normTwo{y} - 3 \right) \hat{A}x}}
\end{align}
\end{document}

该代码产生以下结果: 在此处输入图片描述 这是 pdf 的链接:http://docdro.id/HZMP7Uy 这看起来正是我想要的样子,并且所有链接都链接到正确的位置:)

感谢Gustavo Mezzetti 的评论这让我找到了正确的方向。我的解决方案基于这篇文章由 Peter Grill 撰写此篇文章来自 egreg

我能想到的只有一件事可以改进:当我在 Firefox-build-in-pdf-reader 中打开将鼠标移到括号上时,只有一个括号会突出显示。我认为如果将鼠标移到一个括号上会导致同时突出显示两个括号,那将非常漂亮,但我不确定这是否可行。(如果有人能解决这个问题,我当然会不接受我的解决方案,而接受更强大的解决方案。)

相关内容