買い手責任負担 ...

買い手責任負担 ...

複数の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一般的な論文では満たされない可能性があります。たとえば、多くの論文では、アラビア数字に切り替える前に、小文字のローマ数字を「前書き」に使用しています。これには多大な注意が必要であり、おそらく文書内の異なる種類の行番号を切り替える必要があります。これは、 で動作させることも考える前のことですerratalinenoの機能と落とし穴の詳細については、 のドキュメントを参照してください。

完全なコード:

\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 リポジトリから作業ディレクトリにコピーする必要があります。

注意してください。パッケージの内部はかなり複雑なので、オプションの使用方法と動作のカスタマイズ方法を完全に理解するには、LaTeX と pkgkeys パッケージをよく理解している必要があります。

エラッタ修正に関するリソース:

多くのオプションの中で、各エラッタのページ番号と行番号を表示するには、オプションを使用します。ラインノス=true

私は以下の例に基づいて例を挙げましたエラッタテスト.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):ここに画像の説明を入力してください

関連情報