Mehrere Probleme mit benutzerdefinierten Befehlen und Fancyhdr

Mehrere Probleme mit benutzerdefinierten Befehlen und Fancyhdr

Ich habe eine Frage mit mehreren Teilen. Ich erstelle eine Klassendatei für eine Standard-Arbeitsprozedur-Klassendatei. Dazu gehört auch die Notwendigkeit von Revisionskontrollflags.

Ich versuche, einen benutzerdefinierten Befehl zu erstellen, mit dem Sie das Datum und den geänderten Text eingeben. Der Befehl soll den Text wie zuvor normal einfügen, fügt jedoch mithilfe des Changebar-Pakets eine Revisionsleiste am rechten Rand hinzu. Außerdem ändert er den Seitenstil, um „TCN: Datum“ zur Fußzeile der Seite hinzuzufügen, wobei das Datum das Datum ist, das Sie im benutzerdefinierten Befehl eingegeben haben.

Ich möchte außerdem, dass der Befehl zwei oder mehr separate „TCN: Datum“ in die Fußzeile einfügt, wenn der Befehl auf einer Seite mehr als einmal verwendet wird. Ich bin mir nicht sicher, wie ich das überhaupt angehen soll. Ich dachte daran, ein Programmskript in der Klassendatei einzurichten, bin mir aber nicht sicher, wie das in LATEX geht.

Einige der Probleme, auf die ich stoße, sind, dass sich das Datum in der Fußzeile nicht ändert, wenn ich einen neuen benutzerdefinierten Befehl aufrufe, sondern es bleibt bei dem, was im ursprünglichen Seitenstil festgelegt wurde. Der Text wird, wenn er in den Befehl eingefügt wird, zu einem neuen Absatz, obwohl ich möchte, dass er nur ein Teil des Haupttexts ist, ähnlich wie der Befehl \textbf{} funktioniert.

Hier ist eine Beispieldatei im .tex-Format. Der benutzerdefinierte Befehl lautet \tcnpage und der Seitenstil lautet call tcn.

\documentclass[10pt]{test}

\revision{5}
\revisionMMYY{12/93}%Format for the date is MM/YY
\date{7/24/08}
\author{test} %Your Name
\usepackage{lipsum}

\begin{document}

\section{Purpose and Discussion}
\lipsum[1]
\subsection{}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed imperdiet ligula et pharetra lobortis. Donec felis nisl, sollicitudin ut ligula ac, hendrerit finibus elit. Sed sapien mi, maximus consequat arcu eu, ullamcorper bibendum risus. Pellentesque hendrerit eleifend scelerisque. \tcnpage{1/12}{Aliquam at velit volutpat eros condimentum rutrum.} Fusce est dui, cursus at est at, auctor euismod sapien. Etiam venenatis ornare facilisis. Ut blandit convallis sollicitudin. Phasellus pharetra eros urna, ut suscipit massa feugiat at. 


\newpage
\lipsum[1]
\newpage
\subsection{subsection title}  
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed imperdiet ligula et pharetra lobortis. Donec felis nisl, sollicitudin ut ligula ac, hendrerit finibus elit. Sed sapien mi, maximus consequat arcu eu, ullamcorper bibendum risus. Pellentesque hendrerit eleifend scelerisque. \tcnpage{4/14}{Aliquam at velit volutpat eros condimentum rutrum.} Fusce est dui, cursus at est at, auctor euismod sapien. Etiam venenatis ornare facilisis. Ut blandit convallis sollicitudin. Phasellus pharetra eros urna, ut suscipit massa feugiat at.

\newpage
\subsection{subsection title}  
Lorem ipsum dolor sit amet, consectetur adipiscing elit. \tcnpage{2/13}{Sed imperdiet ligula et pharetra lobortis.} Donec felis nisl, sollicitudin ut ligula ac, hendrerit finibus elit. Sed sapien mi, maximus consequat arcu eu, ullamcorper bibendum risus. Pellentesque hendrerit eleifend scelerisque. \tcnpage{4/14}{Aliquam at velit volutpat eros condimentum rutrum.} Fusce est dui, cursus at est at, auctor euismod sapien. Etiam venenatis ornare facilisis. Ut blandit convallis sollicitudin. Phasellus pharetra eros urna, ut suscipit massa feugiat at.

\end{document}

Hier ist die Klassendatei, die ich erstelle.

 \NeedsTeXFormat{LaTeX2e}
 \ProvidesClass{sop}[10/10/2014 article class for standard operating procedures]

 % Passes and class options to the underlying article class
 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
 \ProcessOptions
 \LoadClass{article}

 % Redefine the page margins
 \RequirePackage[left=1in,right=1in,top=.75in,bottom=.75in]{geometry}

 %Allows for the revision bar in the rigth margin
 \RequirePackage[color]{changebar}
 \cbcolor{black} %makes the revision bar color black


 % For easier construction of page headers/footers
 \RequirePackage{fancyhdr}
 \newcommand{\revision}[1]{\def\@revision{#1}}
 \newcommand{\revisionMMYY}[1]{\def\@revisionMMYY{#1}}
 \newcommand{\tcn}[1]{\def\@tcn{#1}}

 \fancypagestyle{plain}{ % for first page
 \fancyhf{}
 \fancyhead[R]{SOP}
 \renewcommand{\headrulewidth}{0pt}
 \fancyfoot[R]{REV \@revision,\ \@revisionMMYY}

 \renewcommand{\footrulewidth}{0pt}}

 \pagestyle{fancy} % for other pages
 \fancyhf{}
 \fancyhead[R]{SOP}

 \renewcommand{\headrulewidth}{0pt}
 \fancyfoot[R]{REV \@revision,\ \@revisionMMYY}

 \renewcommand{\footrulewidth}{0pt}

 \fancypagestyle{tcn}{ %This style is for any page with a TCN number. Added 11/20/2014 by 
\pagestyle{fancy} 
\fancyhf{}
\fancyhead[R]{SOP}
%\thesopchapternumber
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[R]{REV \@revision,\ \@revisionMMYY
    \\ TCN: \@tcn}
%\therevision,\ \therevisionMMYY
\renewcommand{\footrulewidth}{0pt}
}

\newcommand{\tcnpage}[2] { % Use this command when wanting to add a TCN to the single page. It takes the form of \tcnpage{DATE} Added 11/20/2014 by
\tcn{#1}

\cbstart
#2
\cbend
\thispagestyle{tcn}
}

\thispagestyle{plain}

\endinput

Antwort1

Ich bin nicht ganz sicher, ob ich Ihre Frage und Ihren Code richtig verstanden habe, aber bewirkt es, was Sie wollen?

\begin{filecontents}{test.cls}
  \NeedsTeXFormat{LaTeX2e}
  \ProvidesClass{sop}[10/10/2014 article class for standard operating procedures]

  % Passes and class options to the underlying article class
  \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
  \ProcessOptions
  \LoadClass{article}

  % Redefine the page margins
  \RequirePackage[left=1in,right=1in,top=.75in,bottom=.75in]{geometry}

  %Allows for the revision bar in the rigth margin
  \RequirePackage[color]{changebar}
  \cbcolor{black} %makes the revision bar color black


  % For easier construction of page headers/footers
  \RequirePackage{fancyhdr,afterpage}
  \newcommand{\revision}[1]{\def\@revision{#1}}
  \newcommand{\revisionMMYY}[1]{\def\@revisionMMYY{#1}}

  \fancypagestyle{plain}{% for first page
    \fancyhf{}
    \fancyhead[R]{SOP}
    \renewcommand{\headrulewidth}{0pt}
    \fancyfoot[R]{REV \@revision,\ \@revisionMMYY}
    \renewcommand{\footrulewidth}{0pt}}

  \pagestyle{fancy} % for other pages
  \fancyhf{}
  \fancyhead[R]{SOP}
  \renewcommand{\headrulewidth}{0pt}
  \fancyfoot[R]{REV \@revision,\ \@revisionMMYY}
  \renewcommand{\footrulewidth}{0pt}

  \fancypagestyle{tcn}{%This style is for any page with a TCN number. Added 11/20/2014 by
    \fancyhf{}%
    \fancyhead[R]{SOP}%
    %\thesopchapternumber
    \renewcommand{\headrulewidth}{0pt}%
    \fancyfoot[R]{REV \@revision,\ \@revisionMMYY
      \\ TCN: \@tcn}%
    %\therevision,\ \therevisionMMYY
    \renewcommand{\footrulewidth}{0pt}}

  \newcommand*\tcn[1]{\def\@tcn{#1}}
  \def\@tcn{}
  \newcommand{\tcnpage}[2] {% Use this command when wanting to add a TCN to the single page. It takes the form of \tcnpage{DATE} Added 11/20/2014 by Joseph Antworth
    \edef\@oldtcn{\@tcn}%
    \def\tempa{}%
    \ifx\tempa\@oldtcn\tcn{#1}\else\tcn{\@oldtcn, #1}\fi%
    \cbstart
    #2
    \cbend
    \thispagestyle{tcn}%
    \afterpage{\clearpage\gdef\@tcn{}}}

  \thispagestyle{plain}

  \endinput
\end{filecontents}
\documentclass[10pt]{test}

\revision{5}
\revisionMMYY{12/93}%Format for the date is MM/YY
\date{7/24/08}
\author{test} %Your Name
\usepackage{lipsum}

\begin{document}

  \section{Purpose and Discussion}
  \lipsum[1]
  \subsection{}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed imperdiet ligula et pharetra lobortis. Donec felis nisl, sollicitudin ut ligula ac, hendrerit finibus elit. Sed sapien mi, maximus consequat arcu eu, ullamcorper bibendum risus. Pellentesque hendrerit eleifend scelerisque. \tcnpage{1/12}{Aliquam at velit volutpat eros condimentum rutrum.} Fusce est dui, cursus at est at, auctor euismod sapien. Etiam venenatis ornare facilisis. Ut blandit convallis sollicitudin. Phasellus pharetra eros urna, ut suscipit massa feugiat at.


  \newpage
  \lipsum[1]
  \newpage
  \subsection{subsection title}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed imperdiet ligula et pharetra lobortis. Donec felis nisl, sollicitudin ut ligula ac, hendrerit finibus elit. Sed sapien mi, maximus consequat arcu eu, ullamcorper bibendum risus. Pellentesque hendrerit eleifend scelerisque. \tcnpage{4/14}{Aliquam at velit volutpat eros condimentum rutrum.} Fusce est dui, cursus at est at, auctor euismod sapien. Etiam venenatis ornare facilisis. Ut blandit convallis sollicitudin. Phasellus pharetra eros urna, ut suscipit massa feugiat at.

  \newpage
  \subsection{subsection title}
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. \tcnpage{2/13}{Sed imperdiet ligula et pharetra lobortis.} Donec felis nisl, sollicitudin ut ligula ac, hendrerit finibus elit. Sed sapien mi, maximus consequat arcu eu, ullamcorper bibendum risus. Pellentesque hendrerit eleifend scelerisque. \tcnpage{4/14}{Aliquam at velit volutpat eros condimentum rutrum.} Fusce est dui, cursus at est at, auctor euismod sapien. Etiam venenatis ornare facilisis. Ut blandit convallis sollicitudin. Phasellus pharetra eros urna, ut suscipit massa feugiat at.

\end{document}

Revisionsinformationen in Fußzeilen

verwandte Informationen