다양한 행을 어떻게 인용하나요?

다양한 행을 어떻게 인용하나요?

이상적으로는 다음과 같은 구문을 사용하여 출력 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}

텍스트 자체는 다음과 같습니다.

해당 명령 없이 PDF 출력

답변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}

여기에 이미지 설명을 입력하세요

관련 정보