\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%
% The documentation of the _knowledge package_ can be found at:
%
%    http://www.irif.fr/~colcombe/knowledge_en.html
%
%
% Loading other packages before knowledge activates features.
% The most common use of knowledge makes use of hyperref and xcolor:
\usepackage[breaklinks,hidelinks]{hyperref} 
\usepackage{xcolor} 
%
% The package 'knowledge' has  now to be loaded.
% The options 
%      'paper', 'electronic' or 'composition' (default)
% can be used. These activates different rendering styles:
% - 'paper' produce a paper to be printed:
%   text in black and white
% - 'electronic' highlights links using colors:
%   for being read on an electronic device
% - 'composition' (or default) highlights missing knowledges as
%   well as agives other pieces of information. It should always
%   be used but when the paper is ready.
%
\usepackage[scope]{knowledge} % default
%\usepackage[scope,electronic]{knowledge} % final version to be read electronically
%\usepackage[scope,paper]{knowledge} % final version in black and white for printing
%

% The 'notion' configuration is commonly used for scientific papers.
\knowledgeconfigure{notion}

% The 'quotation' configuration is commonly used and triggers the "..." notation.
\knowledgeconfigure{quotation}



% It is convenient now to provide a list of \knowledge in the preamble
% (or in an external file) according to the following syntax:
%
%    \knowledge{knowledge text}[synonym 1|synonym 2|...]{directives}
%
% The most common directive in a science paper is 'notion': knowledges that
% are used in the body with  \intro and \kl commands/""...""" and "..." notatation:
\knowledge{anchor point}[anchor points|Anchor points]{notion}
\knowledge{diagnose file}{notion}
\knowledge{knowledge package}{notion,typewriter}
\knowledge{paper mode}{notion}
\knowledge{electronic mode}{notion}
\knowledge{composition mode}{notion}

% the synonym directive can replace the [...] syntax 
\knowledge{knowledge}{notion}
\knowledge{knowledges}{synonym}
\knowledge{Knowledges}{synonym}

% Some other configurations are possible, such as external url's or replacement texts:
\knowledge{LaTeX}[latex|LATEX|Latex]{url={https://fr.wikipedia.org/wiki/LaTeX},  text=\LaTeX}

% Configurations can also be made contextual. For instance, the
% following knowledge is only accessible directly in the introduction.
% It can nevertheless be used from elsewhere using "pdflatex@@section:introduction",
\knowledge{pdflatex}{scope={section:example},url={https://en.wikipedia.org/wiki/PdfTeX}, typewriter}
% or \kl(section:introduction){pdflatex}. See 'scoping' in the documetation for more details.

% Scoping can be used in the preamble. For instance:
\begin{scope}\label{package}
   \knowledge{knowledge}{link=knowledge package,link scope}
\end{scope}






\title{Mini example for the \texttt{knowledge} package}
\date{}
\begin{document}
\maketitle
\begin{abstract}
\AP This document provides an elementary example of the "knowledge package" for "latex".
\end{abstract}

\section{Introduction}
\label{section:introduction}

The package ""knowledge@@package"" is a package for "latex" that helps associating information to terms. This can be used for:
\begin{itemize}
\item managing external urls, for instance separating the file containing  the addresses from their use,
\item managing internal references's such as linking every use of a concept to the place of its introduction (in particular avoiding the use of labels),
\item managing the index in a centralized way,
\item replacing some macros for configuring the display.
\end{itemize}
Primarily, the goal of the "knowledge@@package" is for the production of scientific documents (the longer, the more interesting, such as a thesis or a book) in order to improve their readability on electronic devices. Ultimately, the goal is to produce documents that are more semantic-aware. Some capabilities (link handling the index) are not related to this purpose in particular.

\section{Example running}
\label{section:example}
Try compiling this document (two compilation phases to have proper links) using "pdflatex", and see how some notions are hyperlinked to their introduction point (some viewers make it more obvious than others by displaying a preview of the target of a link inside a document; since there is only one page in this example, this may be worth zooming in this case).
\AP When the "paper mode" is not active, links are clearly identified in blue. Try then compiling it in ""paper mode"" (an option of the "knowledge package"); it now looks like a regular paper (but the links are still there). In ""electronic mode"",
the links are still colored, but some other hints disappear like "anchor points".

% \AP provides an anchor point: this will be the precise target of the hyperlink.
% It is good practice to use is at the beginning of every paragraph that contains
% \intro commands. If 'final=false', then these anchor points appear as a small
% corner (red with xcolor).


\knowledgeconfigure{quotation=false}% temporarily disables the " notation
\AP While writing a document, the two syntaxes \verb|"text"| and \verb|""text""| should be used each time some important concept is used or introduced respectively in the paper. For instance:
\begin{quote}
\verb|Define a ""group"" to be a "monoid" such that...|
\end{quote}
The `@' symbol allows some flexibility by having a displayed text different from the target:
\begin{quote}
\verb|"This kind of algebras@solvable groups"...|
\end{quote}
\knowledgeconfigure{quotation}

\AP These concepts are referred to as ""knowledges"". "Knowledges" are to be defined (in general in the preamble of the document) using a command of the form:
\begin{quote}
\verb|\knowledge|\texttt{\{name\}[synonym1|synonym2|...]\{directives\}}
\end{quote}
However, using undefined "knowledges" will not cause compile time errors, but be displayed as in the following `"unknown knowledge"' (i.e. in non-"paper mode" in brown, but in regular black in "paper mode" or "electronic mode"). \AP The ""diagnose file"" (that ends with a \texttt{.diagnose} extension) contains detailed information about these warnings, and should be read often when finalizing the document.

\AP Small red corners called ""anchor points"" are visible in the margin, and represent the precise location in a pdf document where an internal link jumps. These are introduced
using the \texttt{\detokenize{\AP}}command, commonly at the beginning of each paragraph that introduce some concept, or even in the middle of the paragraph. The "anchor points" become invisible in "paper@paper mode" or "electronic mode".
\end{document}