
Quero poder especificar um pequeno trecho de texto que possa ser citado como um intervalo de linhas no PDF de saída, de preferência com este tipo de sintaxe:
\documentclass{memoir}
\usepackage{lineno}
\begin{document}
\runninglinenumbers*
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam lacinia posuere
magna ut imperdiet. \labellines{nunc-pellentesque}{Nunc pellentesque} velit quis
leo interdum ullamcorper. Ut fringilla sapien ut sem viverra, et rhoncus enim
lobortis. Morbi diam eros, tristique nec feugiat eu, consequat ac dui. Duis
molestie, sem id efficitur dignissim, velit metus auctor orci, sit amet mattis
metus purus in nibh. Etiam mattis, magna ut imperdiet molestie, ex leo viverra
velit, ac posuere augue est maximus risus. Etiam ac pellentesque nulla. Morbi
quis pharetra purus. Proin porta, turpis et scelerisque hendrerit, elit eros
malesuada mi, a imperdiet massa est id nibh. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptos himenaeos.
\labellines{nunc-pharetra}{Nunc pharetra vehicula metus, eu tincidunt arcu
aliquet et. Aenean ac odio nunc. Etiam ultricies purus non dolor tincidunt, et
ultricies turpis consequat. Integer vitae ullamcorper eros. Nullam pulvinar
dictum nunc. Morbi ac justo mi.}
% \reflines{nunc-pellentesque} should print "line 2"
``Nunc pellentesque\ldots'' was on \reflines{nunc-pellentesque}.
% \reflines{nunc-pharetra} should print "lines 10--13"
``Nunc pharetra\ldots'' was on \reflines{nunc-pharetra}.
\end{document}
O texto por si só fica assim:
Responder1
Uma solução fácil, mas talvez não à prova de falhas:
Coloque um
\linelabel{start:#1}
no início do número 2 anexoColoque um
\linelabel{end:#1}
no final do número 2 incluído
Use \getrefnumber
do refcount
pacote e extraia os números das linhas. Em princípio \lineref
serviria, mas isso não produz números expansíveis, portanto a comparação falhará.
Não adicionei código para verificar se o rótulo existe!
\documentclass{memoir}
\usepackage{refcount}
\usepackage{lineno}
\newcommand{\labellines}[2]{%
\linelabel{start:#1}%
#2%
\linelabel{end:#1}%
}
\makeatletter
\newcommand{\reflines}[1]{%
\begingroup
\edef\temp@a{\getrefnumber{start:#1}}%
\edef\temp@b{\getrefnumber{end:#1}}%
\ifnum\temp@a = \temp@b
line \temp@a%
\else
lines \temp@a\ and \temp@b%
\fi
\endgroup
}
\makeatother
\begin{document}
\runninglinenumbers*
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam lacinia posuere
magna ut imperdiet. \labellines{nunc-pellentesque}{Nunc pellentesque} velit quis
leo interdum ullamcorper. Ut fringilla sapien ut sem viverra, et rhoncus enim
lobortis. Morbi diam eros, tristique nec feugiat eu, consequat ac dui. Duis
molestie, sem id efficitur dignissim, velit metus auctor orci, sit amet mattis
metus purus in nibh. Etiam mattis, magna ut imperdiet molestie, ex leo viverra
velit, ac posuere augue est maximus risus. Etiam ac pellentesque nulla. Morbi
quis pharetra purus. Proin porta, turpis et scelerisque hendrerit, elit eros
malesuada mi, a imperdiet massa est id nibh. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptos himenaeos.
\labellines{nunc-pharetra}{Nunc pharetra vehicula metus, eu tincidunt arcu
aliquet et. Aenean ac odio nunc. Etiam ultricies purus non dolor tincidunt, et
ultricies turpis consequat. Integer vitae ullamcorper eros. Nullam pulvinar
dictum nunc. Morbi ac justo mi.}
% \reflines{nunc-pellentesque} should print "line 2"
``Nunc pellentesque\ldots'' was on \reflines{nunc-pellentesque}.
% \reflines{nunc-pharetra} should print "lines 10--13"
``Nunc pharetra\ldots'' was on \reflines{nunc-pharetra}.
\end{document}