경고 사항 ...

경고 사항 ...

여러 개의 LaTeX 파일로 구성된 논문의 정오표를 추적하여 별도의 문서에 표시하고 싶습니다. 사용하여errata패키지 나는 다음과 같은 일을 할 수 있습니다 :

thebook.tex:

\documentclass{article}
\usepackage[hide, record]{errata}

\title{The Book}
\begin{document}
\maketitle
\section{First section}
I misspelled a \erratumReplace{misspelled `word'}{ord}{word} on this line.

\section{Second section}
... and also on this \erratumReplace{misspelled `line'}{ine}{line}.

\end{document}

theerrata.tex:

\documentclass{article}
\usepackage[hide]{errata}

\title{Errata in The Book}
\begin{document}
\maketitle
\printerrata{thebook}
\end{document}

그것은 나에게 다음을 제공합니다:

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

각 정오표의 섹션/하위 섹션과 페이지 번호를 인쇄할 수 있는 방법이 있습니까? 그만큼errata선적 서류 비치말한다:

해당 위치는 페이지 번호가 아닌 해당 섹션에 의해 참조됩니다. 왜냐하면 정오표 수정 과정에서 전자가 변경될 것으로 예상하지 않기 때문입니다.

그러나 나의 특별한 경우에는 각 정오표에 대한 더 많은 위치 정보, 즉 최소한 페이지 번호와 가능하다면 줄 번호가 필요합니다. errata패키지나 다른 패키지를 사용하여 이를 달성할 수 있는 방법이 있습니까 ?

답변1

나는 패키지가 즉시 이 작업을 수행하도록 설득하는 것이 불가능하다고 생각합니다. 그러나 활성 상태 -errata.tex일 때 파일 에 기록하는 에라타에 대한 참조를 생성하는 데 사용하는 명령을 패치할 수 있습니다 .record

예를 들어 를 사용하면 etoolbox다음과 같이 섹션 정보에 페이지 번호를 추가할 수 있습니다.

\documentclass{article}
\usepackage[hide, record]{errata}
\usepackage{etoolbox}
\apptocmd\ErratumRef{: p.~\arabic{page}}{\typeout{Successfully added pages to errata references.}}{\typeout{Oh no! Could not add pages to errata references. Patch failed!}}
\title{The Book}
\begin{document}
\maketitle
\section{First section}
I misspelled a \erratumReplace{misspelled `word'}{ord}{word} on this line.
\clearpage
No errors here!
\clearpage
\section{Second section}
\dots and also on this \erratumReplace{misspelled `line'}{ine}{line}.
\end{document}

나는 모든 페이지 번호가 1이거나 현재 섹션 번호와 같은 것이 아닌지 테스트하기 위해 MWE를 약간 확장했습니다. 위의 내용은 다음 -errata.tex파일을 생성합니다.

\erratumItem{{}1: p.\nobreakspace  {}1}{misspelled `word'}
\erratumItem{{}2: p.\nobreakspace  {}3}{misspelled `line'}

오류 목록이 나올 때

\documentclass{article}
\usepackage[hide]{errata}
\title{Errata in The Book}
\begin{document}
  \maketitle
  \printerrata{<filename of The Book>}
\end{document}

처리되어 생성됩니다.

더 많은 정보를 제공하는 정오표


줄 번호는 훨씬 더 까다롭고 이 답변 작성자의 이해를 훨씬 뛰어넘습니다. 그러나 이전에 사용한 적이 없지만 lineno여기서는 패키지가 도움이 될 수 있습니다.

경고 사항 ...


패키지는 다양한 옵션을 제공하지만 이들 중 일부가 우리의 목적에 사용될 가능성은 없습니다. 가장 강력한 옵션은 아마도 기본 옵션으로 패키지를 로드하고 \linenumbersbefore 라고 말하는 것입니다 \maketitle.

이 경우 원본 문서의 1페이지와 3페이지는 다음과 같습니다.

줄 번호 1페이지 줄 번호 3페이지

패치를 수정할 수 있습니다

\apptocmd\ErratumRef{: p.~\arabic{page}: l.~\arabic{linenumber}}{\typeout{Successfully added pages to errata references.}}{\typeout{Oh no! Could not add pages to errata references. Patch failed!}}

정오표 문서에서 다음을 생성하려면

정오표에 있는 줄 번호

원본 문서에 줄 번호를 표시하지 않으려면 추가할 수 있습니다.

\let\makeLineNumber\relax

정오표에 대한 참조는 여전히 줄 번호를 선택합니다. 그러나 이렇게 하면 54페이지에서 1,023행이 어디에 있는지 추측할 수 없게 되므로 행 번호의 유용성이 크게 떨어집니다. 정오표가 많으면 관리가 가능할 수 있지만 페이지의 정오표가 드물면 줄 번호는 거의 쓸모가 없습니다.

lineno각 페이지의 페이지 번호 재설정을 지원합니다. 그러나 이것은 에서 직접적으로 작동하지 않습니다 errata. 더욱이 이 옵션에 부과되는 조건은 lineno일반적인 논문에서는 충족될 가능성이 거의 없습니다. 예를 들어, 많은 논문에서는 아랍어로 전환하기 전에 '머리말'에 소문자 로마 숫자를 사용합니다. 이를 위해서는 상당한 주의가 필요하며 아마도 문서에서 다양한 종류의 줄 번호 사이를 전환해야 할 것입니다. 이는 작업을 고려하기도 전의 일입니다 errata. lineno기능과 함정에 대한 자세한 내용은 의 문서를 참조하세요 .

전체 코드:

\documentclass{article}
\usepackage[hide, record]{errata}
\usepackage{etoolbox}
\usepackage{lineno}
\apptocmd\ErratumRef{: p.~\arabic{page}: l.~\arabic{linenumber}}{\typeout{Successfully added pages to errata references.}}{\typeout{Oh no! Could not add pages to errata references. Patch failed!}}
\title{The Book}
\begin{document}
\linenumbers
\maketitle
\section{First section}
I misspelled a \erratumReplace{misspelled `word'}{ord}{word} on this line.
\clearpage
No errors here!
\clearpage
\section{Second section}
\dots and also on this \erratumReplace{misspelled `line'}{ine}{line}.
\end{document}

정오표 문서의 코드는 위에 나열된 대로 유지됩니다.

답변2

저는 석사 논문에 errata 패키지를 사용하기 시작했습니다. 하지만 너무 제한적이라는 것을 금방 깨닫고 수정하기 시작했고 결국 완전히 다시 작성하게 되었습니다.

이전 버전과의 호환성을 보장하면서 광범위하게 확장했습니다. 불행하게도 나는 그것을 ctan에 게시하지 못했기 때문에 지금은 git repo에서 작업 디렉토리로 패키지 파일을 복사해야 합니다.

패키지 내부는 매우 복잡하므로 옵션 활용 방법과 동작 사용자 정의 방법을 완전히 이해하려면 LaTeX와 pkgkeys 패키지에 대한 이해가 필요합니다.

정오표 수정을 위한 리소스:

많은 옵션 중에서 옵션을 사용하면 각 정오표의 페이지 번호와 줄 번호를 표시할 수 있습니다.리넨 = 사실.

나는 다음을 기반으로 예를 만들었습니다.erratatest.texGithub 저장소에서 가능한 한 많이 제거하려고 시도했습니다.

\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[margin=1.6in,marginparsep=3mm]{geometry}

\usepackage{pgfkeys}
\usepackage{caption}
\usepackage{etoolbox}
\usepackage{etextools}
\usepackage{xparse}
\usepackage{tcolorbox}

\usepackage{marginnote}

% Needed for line numbers
\usepackage{lineno}

\setpagewiselinenumbers
\linenumbers
% Remove the line numbers in the margin when using the lineno package
\renewcommand{\LineNumber}{}

\usepackage[bookmarks,breaklinks,pdfpagelabels,
colorlinks=true,  % Colors links instead of ugly boxes
linkcolor=black,  % Color of internal links
]{hyperref}[2012/11/06] % Reference package, must be before cleveref

\usepackage[noabbrev,nameinlink]{cleveref}[2013/12/28]


\usepackage[
margins=true,
foots=true,
record=true,
linenos=true,
defaultargs={margin=true,foot=true},
defaultargsnote={inlinechange=false},
%requirecmddescription=false,
%marginnote=false,
marginnote=true,
uniquelistlabels=0,
inlinemarks=false,
%inlinechanges=false,
inlinemarks=true,
styles={tablelist},
]{errata}[2015/04/16]

% change margin node format to use tcolorbox
\errataSetKeyFormat[#1+#2]{marginfmt/marginnote}{%
{\vspace{-4pt}%
\begin{tcolorbox}[size=fbox,nobeforeafter,
    colframe=red!50!white,colback=red!25!yellow!5!white,%
    fontupper=\scriptsize,%
    bottomrule=1pt,toprule=1pt,leftrule=0pt,rightrule=0pt,
%    arc=0cm, outer arc=0mm, % Remove the rounded corners
    arc=0cm,
    outer arc=0mm, % Remove the rounded corners
    code={\pgfkeysalsofrom#1}
    ]#2\end{tcolorbox}}}%

\makeatletter

% Example on changing the table styling
\errataset{%
  customliststyletablekeyformats/.style={%
    listformats/lineref/.setStrKeyFmt={##1}{~(L \lineref{##1})},
    %%
    listformats/erratalistbegin/.setStrKeyFmt={##1}{%
      \setlength\LTleft{-1cm}
      \setlength\LTright{-1cm}
      \makeatletter%
      \begin{longtable}{ c@{\tcolsep{1.7}} c@{\tcolsep{2}} c p{15em} l c }%
        & Title & Type & Action & Page
       },
    listformats/erratalistend/.setStrKeyFmt={##1}{\end{longtable}\makeatother},
    actionformat/replace/.setStrKeyFmt={##1+##2}{##2 \shortarrow ##1},
    actionformat/add/.setStrKeyFmt={##1}{##1},
    actionformat/delete/.setStrKeyFmt={##1}{##1},
    actionformat/note/.setStrKeyFmt={##1}{ ##1},
    footformats/description/.setStrKeyFmt={##1}{~[##1]~},
    footformats/erratumcustomlocation/.setStrKeyFmt={##1+##2}{~[P:\pageref{##1} (L \lineref{##2})]},
    listformats/erratumcustomlocation/.setStrKeyFmt={##1+##2}{\pageref{##1} (L \lineref{##2})},
    setCmdKeyArgsGetTwo={erratumcustomlocation}{##1+##2}{{pageref}+{lineref}},
  },
  customliststylefortable/.code={
    \errataSetListFormat{+erratumlistitemtitle,+erratumlisttarget,%
      \noexpand\errataamersand,+erratumnamedlink,\noexpand\errataamersand,%
      +action,\noexpand\errataamersand,+actiondescription,\noexpand\errataamersand,%
      -erratumcustomlocation}%
    \errataSetFootFormat{+description, +actiondescription, -erratumcustomlocation}
    \setcounter{@errata@uniquelistlabels}{4}
    \usepackage{stmaryrd}
    \newcommand{\shortarrow}{\ensuremath{\vrule height 2\fontdimen22\textfont2 width 0pt\shortrightarrow}}
    \newcommand{\tcolsep}[1]{\hspace{##1em}}
    \errataRegisterFormatKey{erratumcustomlocation}
  },
  styles/customtablelist/.style={styles/tablelist, customliststyletablekeyformats,
    customliststylefortable},
}

% Apply the custom table style with line numbers in errata
\errataset{.errataapplystyles/.list={customtablelist}}

\makeatother

\title{The Book}

\begin{document}

\section{First section}\label{sect:first}
I misspelled a \erratumReplace{typo}{ord}{word} on this line.

\section{Second section}

... and also on this \erratumReplace[margin=false]{typo}{ine}{line}, but hide
the note in the margin.

On this line we \erratumReplace[inlinemark=false,
label={typolabel}]{typo}{fixes}{fix} a typo and hide the inline marking, but we
still find \cref{typolabel} in the \cref{chap:errata}.

\section{Third section}

Here we \erratumAdd[foot=false]{add}{add} a word without a footnote comment.

\section{Errata}\label{chap:errata}

\PrintErrata

\end{document}

다음과 같습니다 (PDF):여기에 이미지 설명을 입력하세요

관련 정보