
이상적으로는 다음과 같은 구문을 사용하여 출력 PDF에서 줄 범위로 인용할 수 있는 짧은 발췌 텍스트를 지정할 수 있기를 원합니다.
\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}
텍스트 자체는 다음과 같습니다.
답변1
쉬운 솔루션이지만 안전하지는 않습니다.
\linelabel{start:#1}
동봉된 #2의 시작 부분에 a를 넣으세요 .\linelabel{end:#1}
동봉된 #2 끝에 a를 넣으세요 .
\getrefnumber
패키지 에서 사용 refcount
하고 줄 번호를 추출합니다. 원칙적으로는 \lineref
가능하지만 확장 가능한 숫자가 생성되지 않으므로 비교가 실패합니다.
라벨이 전혀 존재하는지 확인하는 코드를 추가하지 않았습니다!
\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}