1

I was wondering whether I could use the labeling mechanism explained here to get the line numbers that I want to use for highlighting code via highlightlines in minted.

I am imagining something like this (Modified example from https://tex.stackexchange.com/a/483714/85983):

\begin{minted}[linenos=true, escapeinside=!!, highlightlines=\ref{myline}]{c++}
    i = i + 1 ;  
    j = j + 1 ; !\label{myline}!
    k = k + 1 ;
\end{minted}
The important line is line \ref{myline}.

In the resulting output the line j = j + 1 ; should be highlighted.

BR123
  • 307
  • 2
  • 10

1 Answers1

6

Both \ref and \pageref are not fully expandable, but refcount package provides a \getrefnumber{<label name>} which fully expands to the linked counter value of that <label name>. Hence your requirement can be implemented by:

\documentclass{article}
\usepackage{minted}
\usepackage{refcount}

\makeatletter % expand value of key "highlightlines" \define@key{FV}{highlightlines}{\edef\FV@HighlightLinesList{#1}} \makeatother

\begin{document} \begin{minted}[ linenos=true, escapeinside=!!, highlightlines={\getrefnumber{myline}, \getrefnumber{yourline}} ]{c++} i = i + 1 ;
j = j + 1 ; !\label{myline}! k = k + 1 ; l = l + 1 ; !\label{yourline}! \end{minted} The important lines are line~\ref{myline} and line\ref{yourline}.

\end{document}

enter image description here

muzimuzhi Z
  • 26,474