Vorsicht beim Kauf ...

Vorsicht beim Kauf ...

Ich möchte in der Lage sein, Korrekturen in einer Arbeit, die aus mehreren LaTeX-Dateien besteht, nachzuverfolgen und sie dann in einem separaten Dokument anzuzeigen. Mit demerrataPaket kann ich so etwas tun:

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}

Das gibt mir:

Bildbeschreibung hier eingeben

Gibt es eine Möglichkeit, die Seitenzahl und den Abschnitt/Unterabschnitt für jedes Erratum auszudrucken?errataDokumentationsagt:

Ihr Standort wird anhand des Abschnitts angegeben, in dem sie erscheinen, und nicht anhand der Seitenzahl, da wir nicht davon ausgehen, dass sich erstere im Zuge der Korrektur der Druckfehler ändern wird.

In meinem speziellen Fall benötige ich jedoch mehr Positionsinformationen zu jedem Erratum – zumindest die Seitenzahl und wenn möglich auch die Zeilenzahl. Gibt es eine Möglichkeit, dies mit errataoder einem anderen Paket zu erreichen?

Antwort1

Ich glaube nicht, dass es möglich ist, das Paket dazu zu bringen, dies sofort zu tun. Wir können jedoch den Befehl patchen, den es verwendet, um die Referenzen für die Errata zu erstellen, die es in die -errata.texDatei schreibt, wenn recordes aktiv ist.

Beispielsweise etoolboxkönnen wir mithilfe von die Seitenzahl wie folgt zu den Abschnittsinformationen hinzufügen:

\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}

Ich habe das MWE ein wenig erweitert, um zu testen, ob nicht alle Seitenzahlen gleich 1 oder gleich der aktuellen Abschnittsnummer oder so etwas sind. Das Obige erzeugt die folgende -errata.texDatei:

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

Wenn die Liste der Errata

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

verarbeitet wird, entsteht

informativere Errata


Zeilennummern sind wesentlich kniffliger und gehen weit über den Horizont des Autors dieser Antwort hinaus. Obwohl ich es noch nie zuvor verwendet habe, linenokönnte das Paket hier hilfreich sein.

Vorsicht beim Kauf ...


Das Paket bietet verschiedene Optionen, aber nicht alle davon sind wahrscheinlich für unseren Zweck verwendbar. Die robusteste Option ist wahrscheinlich, das Paket einfach mit den Standardoptionen zu laden und \linenumbersbefore einzugeben \maketitle.

In diesem Fall sieht das Originaldokument auf den Seiten 1 und 3 folgendermaßen aus:

Zeilennummern Seite 1 Zeilennummern Seite 3

und wir können unseren Patch ändern

\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!}}

um Folgendes im Errata-Dokument zu veranlassen

Zeilennummern in Errata

Wenn wir es vorziehen, die Zeilennummern im Originaldokument nicht anzuzeigen, können wir hinzufügen

\let\makeLineNumber\relax

und die Referenzen für die Errata werden immer noch die Zeilennummern übernehmen. Dies macht die Zeilennummern jedoch deutlich weniger nützlich, da wir raten müssen, wo auf Seite 54 Zeile 1.023 oder was auch immer ist. Wenn es viele Errata gibt, ist dies wahrscheinlich zu bewältigen, aber wenn es auf einer Seite nur wenige Errata gibt, ist die Zeilennummer fast nutzlos.

linenounterstützt das Zurücksetzen der Seitenzahlen auf jeder Seite. Dies funktioniert jedoch nicht ohne weiteres mit errata. Außerdem werden die Bedingungen, linenodie für diese Option gelten, von einer typischen Abschlussarbeit wahrscheinlich nicht erfüllt. Viele Abschlussarbeiten verwenden beispielsweise kleine römische Ziffern für den „Titel“, bevor sie auf Arabisch umstellen. Dies würde viel Sorgfalt erfordern und wahrscheinlich das Umstellen zwischen verschiedenen Arten von Zeilennummern im Dokument – ​​und das, bevor man überhaupt daran denken kann, es errataauch mit funktionieren zu lassen. linenoWeitere Einzelheiten zu den Funktionen und Fallstricken finden Sie in der Dokumentation von .

Vollständiger Code:

\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}

Der Code für das Errata-Dokument bleibt wie oben aufgeführt.

Antwort2

Ich habe angefangen, das Errata-Paket für meine Masterarbeit zu verwenden. Ich fand es jedoch schnell zu eingeschränkt und begann, es zu modifizieren. Im Endeffekt habe ich es komplett neu geschrieben.

Ich habe es umfassend erweitert und dabei versucht, die Abwärtskompatibilität sicherzustellen. Leider konnte ich es nie auf ctan veröffentlichen, daher ist es im Moment notwendig, die Paketdateien aus dem Git-Repo in Ihr Arbeitsverzeichnis zu kopieren.

Seien Sie gewarnt, die internen Vorgänge des Pakets sind ziemlich komplex. Um die Verwendung der Optionen und die Anpassung des Verhaltens vollständig zu verstehen, sind daher gute Kenntnisse von LaTeX sowie des pkgkeys-Pakets erforderlich.

Ressourcen für die Errata-Änderungen:

Unter vielen Optionen können Sie die Seitenzahl und Zeilennummer für jedes Erratum mit der Option anzeigenlinenos=true.

Ich habe ein Beispiel gemacht basierend auferratatest.texaus dem Github-Repo und habe versucht, es so weit wie möglich zu reduzieren:

\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}

Sieht wie folgt aus (PDF):Bildbeschreibung hier eingeben

verwandte Informationen