LaTeX に隠しデータを入れるにはどうしたらよいでしょうか?

LaTeX に隠しデータを入れるにはどうしたらよいでしょうか?

LaTeX ドキュメントに、マーカーやタグなどの隠しデータを入れたいと思っています。その背後にある考え方は、明示的なエラー メッセージを返すことができるようにすることです。たとえば、この LaTeX ファイルでは、星印の付いたコメント行にタグまたはマーカーを入れたいと思っています。

\documentclass[12pt]{article}

\usepackage[parfill]{parskip}
\usepackage[none]{hyphenat}
\sloppy
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{array,ragged2e, calc}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{needspace}

\definecolor{shadecolor}{RGB}{217,217,217}  % Color used for highlighting
\definecolor{light-blue}{RGB}{0,175,236}    % Color for the footer

% ------------------------------------------------------------------------------------
% Header and footer management.
% ------------------------------------------------------------------------------------
\usepackage{fancyhdr}
\pagestyle{fancy}

% clear any old style settings
\fancyhf{}
\fancyheadoffset{0in}
\headheight = 53pt
\renewcommand{\headrulewidth}{0pt}

% ------------------------------------------------------------------------------------
% Defining the section style
\newcommand{\mysectionstyle}[1]{\colorbox{shadecolor}{\begin{tabular}{>{}p{\rectanglelength}}{\fontsize{13}{6}\selectfont\textbf{#1}}\end{tabular}}\vspace{6pt}}
% ------------------------------------------------------------------------------------
\addtolength{\footskip}{0.6cm}
\renewcommand{\footrulewidth}{1pt}
\renewcommand{\footrule}{{\color{light-blue}%
\vskip-\footruleskip\vskip-\footrulewidth
\hrule width\headwidth height\footrulewidth\vskip\footruleskip}}
% ------------------------------------------------------------------------------------

\usepackage[left=0.75in,top=1.5in,right=0.75in,bottom=1in]{geometry} % Document margins
\usepackage{titlesec}

\newlength{\rectanglelength}
\setlength{\rectanglelength}{\textwidth}
\addtolength{\rectanglelength}{-6pt}

\newlength{\foo}

\begin{document}
\lipsum[1]

\settototalheight{\foo}{\parbox[t]{\linewidth}{\begin{minipage}[t]{\linewidth} \begin{tabular}{@{}>{\RaggedRight}p{11cm}>{\RaggedLeft}p{6.35cm}@{}}\fontsize{13}{6}\selectfont{LaTeX}&\textbf{2011 to 2012}\end{tabular}\\\begin{tabular}{@{}>{\RaggedRight}p{11cm}>{\RaggedLeft}p{6.35cm}@{}}\textbf{Lead Programmer}&\textbf{}\end{tabular}%
\vspace{3pt}\begin{itemize}[parsep=0pt, topsep=0pt, itemsep=0pt, leftmargin=2ex]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\end{itemize}%
\vspace{7pt}\textbf{End Title}\\\lipsum[1]

\vspace{10pt}\end{minipage}}
}
\needspace{\foo}{\setlength{\parskip}{4pt}

% ******* I WANT TO INSERT A TAG OR MARKER HERE.*******
\mysectionstyle{Experiences}

\begin{tabular}{@{}>{\RaggedRight}p{11cm}>{\RaggedLeft}p{6.35cm}@{}}\fontsize{13}{6}\selectfont{LaTeX}&\textbf{2011 to 2012}\end{tabular}\\\begin{tabular}{@{}>{\RaggedRight}p{11cm}>{\RaggedLeft}p{6.35cm}@{}}\textbf{Lead Programmer}&\textbf{}\end{tabular}%
\vspace{3pt}\begin{itemize}[parsep=0pt, topsep=0pt, itemsep=0pt, leftmargin=2ex]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\item \lipsum[1]\end{itemize}%
\vspace{7pt}\textbf{End Title}\\\lipsum[1]

\vspace{10pt}}
\end{document}

LaTeX ファイルにタグまたはマーカーを挿入して、エラーが発生したときにマーカーを取得して、ユーザーフレンドリーなメッセージを返すことができるようにしたいと考えています。たとえば、「セクション X にエラーがあります」などです。

LaTeX で可能ですか? 可能であれば、どうすればいいですか?

答え1

最後の段落で説明されているユースケースを参考にします。

LaTeX ファイルにタグまたはマーカーを挿入して、エラーが発生したときにマーカーを取得して、ユーザーフレンドリーなメッセージを返すことができるようにしたいと考えています。たとえば、「セクション X にエラーがあります」などです。

この\showコマンドはタイプセットを停止し、次のトークンの説明を端末に出力します。同様に、\showtheは停止し、カウンターの値を出力します。

タイプセットが停止すると、iコマンドを使用して処理用のトークンを挿入できるようになります。

これらを組み合わせると、セクション番号を表示し、エラー時にそれを呼び出すマクロを作成できます。

\documentclass{article}
\usepackage{lipsum}

\makeatletter
\newcommand{\showsection}{%
   \showthe\c@section 
}
\makeatother

\begin{document}

\section{First}

\lipsum

\section{Second}

\lipsum

\foo% undefined cs

\section{Third}

\lipsum

\end{document}

コンソール セッションのサンプルを次に示します。

! Undefined control sequence.
l.20 \foo
         % undefined cs
? i \showsection
> 2.
\showsection ->\showthe \c@section 

l.20 \foo
         % undefined cs
? s
OK, entering \scrollmode...

i \showsection端末の入力行に入力すると、次のように印刷されます2. 。出力は好きなように整形できます。

ドキュメントに「タグ」を付ける方法については、すでにあるものを使用して、それらのマクロにフックします。たとえば、セクション番号に新しいものを作成するのではなく、既存のカウンターを使用していることに気付きました。セクションを印刷したい場合名前\sectionマクロにセクション タイトルを保存するコマンドを追加して、代わりにマクロを実行することもできます。(ソースを読むと単純なマクロではない\showことがわかるため、これを実行しませんでした。)\section

答え2

次のような定義をすることができます

\def\thissection{section X}

あなたが制御するエラーメッセージでは、そのコマンドを使用できます

\PackageError{mypackage}{You made a mistake in \thissection: try harder}{}

そして、現在の定義が何であれそれを取得します。

ただし、TeX 自体のエラー ハンドラーをカスタマイズすることはできません。たとえば、ユーザーがコマンドを誤って入力した場合、\fooobarTeX は未定義のコマンド エラーを発行しますが、使用するエラー メッセージをカスタマイズすることはできません。

関連情報