I am having a somewhat complex issue with the knowledge package. A MWE is the following:
\documentclass{article}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{knowledge}
\hypersetup{ % Set up hyperref options
colorlinks=true,
}
\knowledgestyle{no}{color=.}
\knowledgedirective*{automatic in command}{autoref,style=no,intro style=no}
\knowledgenewcommand{\foo}{\cmdkl{foo}}
% Colors in math mode, with correct spacing
% https://tex.stackexchange.com/questions/21598/how-to-color-math-symbols
\makeatletter
\def\mathcolor#1#{@mathcolor{#1}}
\def@mathcolor#1#2#3{%
\protect\leavevmode
\begingroup
\color#1{#2}#3%
\endgroup
}
\makeatother
\newcommand{\targetcolor}[1]{\mathcolor{green}{#1}}
\begin{document}
\section{A section}
\label{sec:sec}
\Cref{sec:sec} is a section
[\intro*\foo]
[\foo]
[\targetcolor{\foo}]
\end{document}
First, I’d still like to have internal links – such as the section reference – colored. So AFAIK I have to set colorlinks=true.
Now the issue is that the knowledge package does a lot of linking. The main use I’d like to have for this is to have all notations (such as foo here) refer to their definition, so that people can go look them up if they are unsure of their meaning. So far, so good.
I definitely do not want to have all those colored, because that would turn most of my mathematics into the link color – not very informative. Now knowledge provides the knowledgestyle command to give a specific color to each knowledge command. So I could just put black in there, so that foo is printed in black.
Now the issue is that later on I want to have different parts of equations colored – I’m doing programming languages theory, that’s basically syntax highlighting. So I define the targetcolor macro, and use it. But then this clashes with the two former: If I set the knowledgestyle to black, I lose because foo is black instead of green. If I do not set knowledgestyle, then the link color wins again and foo turns red.
A solution would be to deactivate link colors in math environments. But I do not know how to do that. I searched around and found AtBeginEnvironment, but I am not an expert enough to understand how to use it with mathematical environments (are these actually evene environments?).
knowledgetag, but apparently I do not have enough reputation. Maybe someone with the right authorizations can do that for me? – Meven Lennon-Bertrand Apr 20 '22 at 15:10\everydisplay{\hypersetup{allcolors=.}}. Side remark: the next xcolor version will define a \mathcolor command. – Ulrike Fischer Apr 20 '22 at 15:17\everydisplay:) It’severymath. Do you want to give this as an answer, so that I can accept it properly? Otherwise I’ll self-answer, but I want to give you credit. – Meven Lennon-Bertrand Apr 20 '22 at 15:25