Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei Thema ist als GELÖST markiert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von Zoid »

Ich nutze die für ein Dokument die Klasse europasscv, bei welcher das Layout in der Datei europasscv.cls gespeichert ist. Dort findet sich folgender Code:
\fancypagestyle{ecvfancy}{
\setlength{\headheight}{13.5pt}
% \setlength{\footskip}{8.4pt}
\fancyhead{}
 
\fancyhead[R]{
\raggedleft \selectecvfont \textcolor{ecvhighlightcolor}{}
}

\fancyhead[L]{
  \setlength{\difflength}{\ecv@leftcolwidth}
  \addtolength{\difflength}{-0.6\ecv@logowidth}
  \noindent
  \begin{minipage}{0.5\textwidth}
    \noindent\makebox[\ecv@leftcolwidth][l]{\noindent\raisebox{-6.5pt}[0pt][0pt]{\if@ecvlogo\includegraphics[width=0.6\ecv@logowidth]{europasslogo2013.pdf}\else \hspace{0.6\ecv@logowidth}\fi}\hspace{\difflength}\hspace{\ecv@colsep}{\ifx\@empty\ecv@notitle \empty \else \ecvcoloredtitle \fi}}
  \end{minipage}
  }
}
Ich würde gerne eine Änderung in Zeile 7 vornehmen (Löschen von \ecv@name), durch eine Ergänzung in meinem .tex-Dokument. Die Änderung würde dann so aussehen:
\fancypagestyle{ecvfancy}{
\setlength{\headheight}{13.5pt}
% \setlength{\footskip}{8.4pt}
\fancyhead{}
 
\fancyhead[R]{
\raggedleft \selectecvfont \textcolor{ecvhighlightcolor}{}
}

\fancyhead[L]{
  \setlength{\difflength}{\ecv@leftcolwidth}
  \addtolength{\difflength}{-0.6\ecv@logowidth}
  \noindent
  \begin{minipage}{0.5\textwidth}
    \noindent\makebox[\ecv@leftcolwidth][l]{\noindent\raisebox{-6.5pt}[0pt][0pt]{\if@ecvlogo\includegraphics[width=0.6\ecv@logowidth]{europasslogo2013.pdf}\else \hspace{0.6\ecv@logowidth}\fi}\hspace{\difflength}\hspace{\ecv@colsep}{\ifx\@empty\ecv@notitle \empty \else \ecvcoloredtitle \fi}}
  \end{minipage}
  }
}
Wie kann ich diesen Code in mein .tex-Dokument integrieren, damit dieser auch wirksam wird? Ich habe bereits versucht, das ganze vor \begin{document} einzufügen, jedoch ohne erfolg. Auch die Verwendung von \makeatletter \makeatother hat keine Änderung gezeigt.

Danke für die Hilfe

ich meine ja nur

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von ich meine ja nur »

Zunächst ist schon der Code, den du als Originalcode angegeben hast, nicht ideal. Da fehlt das Auskommentieren diverser Zeilenenden: → Wie unerwünschte Leerzeichen in der Ausgabe vermieden werden.
Auch Leerzeilen (=Absätze) gehören eigentlich nicht in das Argument von \fancypagestyle.
Das solltest du bei deiner Änderung eventuell beachten. Vermutlich braucht man dagegen das \noindent eher nicht.

Da du kein vollständiges Minimalbeispiel (Link beachten!) angegeben hast, kann ich nicht testen und deshalb auch nicht sagen, was genau bei dir schief geht. Normalerweise sollte der Code in der Dokumentpräambel funktionieren. Da europasscv den Seitenstil aber erst per \AtBeginDocument definiert, muss man das ebenfalls tun. Wegen der @ in diversen Makronamen muss die komplette \AtBeginDocument-Anweisung dabei in \makeatletter und \makeatother eingefasst werden. Alternativ kann man eventuell einen eigenen Seitenstil definieren und diesen nach \begin{document} mit \pagestyle aktivieren. Wie gesagt: Ohne vollständiges Minimalbeispiel kann ich das nicht testen.

Ansonsten sein noch zu erwähnen, dass europasscv nicht auf allen Seiten den Seitenstil verwendet. Auch das könnte bei dir natürlich eine Rolle spielen. Auch das weiß ich ohne vollständiges Minimalbeispiel nicht sicher.

Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von Zoid »

Danke für die Antwort. Es geht darum, dass der Name aus der Kopfzeile der zweiten Seite verschwindet. Dies konnte ich durch die Änderung ind der .cls-Datei im vorherigen Post bereits erreichen.
\documentclass[english,a4paper,nologo,bigfont,notitle]{europasscv}
\usepackage[english]{babel}

\ecvname{Katie Smith}

\begin{document}
  \begin{europasscv}
  \ecvpersonalinfo
  \pagebreak
  Content
  \end{europasscv}

\end{document}
Das wäre ein funktionierendes Minimalbeispiel. Ein Einfügen von folgendem Code vor oder hinter \begin{document} sowie hinter \begin{europasscv} bringt keine Änderung:
\makeatletter
\fancypagestyle{ecvfancy}{
\setlength{\headheight}{13.5pt}
% \setlength{\footskip}{8.4pt}
\fancyhead{}
\fancyhead[R]{
\raggedleft \selectecvfont \textcolor{ecvhighlightcolor}{}
}
\fancyhead[L]{
  \setlength{\difflength}{\ecv@leftcolwidth}
  \addtolength{\difflength}{-0.6\ecv@logowidth}
  \noindent
  \begin{minipage}{0.5\textwidth}
    \noindent\makebox[\ecv@leftcolwidth][l]{\noindent\raisebox{-6.5pt}[0pt][0pt]{\if@ecvlogo\includegraphics[width=0.6\ecv@logowidth]{europasslogo2013.pdf}\else \hspace{0.6\ecv@logowidth}\fi}\hspace{\difflength}\hspace{\ecv@colsep}{\ifx\@empty\ecv@notitle \empty \else \ecvcoloredtitle \fi}}
  \end{minipage}
  }
}
\makeatother
Zuletzt geändert von Zoid am Do 6. Okt 2022, 12:24, insgesamt 1-mal geändert.

ich meine ja nur

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von ich meine ja nur »

Ich brauche nicht die Klassendatei, die ist in MiKTeX und TeX Live ohnehin enthalten. Was ich brauche ist ein vollständiges Minimalbeispiel von genau dem, was du erfolglos probiert hast. Ich will nicht erst noch lange irgendwas von hier nach da kopieren müssen, sondern das Beispiel einfach mit dem LaTeX-Ausgabe-Knopf verarbeiten können. Sonst geht mir einfach die Zeit aus (ich muss das nämlich meist zwischen schieben, wenn ich hier gerade auf etwas anderes warten muss oder Mittagspause habe). Und ja, das kann jeder Anfänger mit der verlinkten Anleitung. Das haben andere hier tausendfach bewiesen. Wenn du es nicht kannst, kann ich dir leider frühestens am Wochenende helfen – wobei ich da auch mal gerne etwas anderes machen würde.

Und beachte bei deinen Versuchen möglichst auch meine Hinweise bezüglich \AtBeginDocument etc. Das kann uns allen viel Zeit sparen.

Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von Zoid »

ich meine ja nur hat geschrieben:
Do 6. Okt 2022, 12:16
Das kann uns allen viel Zeit sparen.
Nichts für ungut, ist deine freie Zeit und du muss sie so nutzen wie es dir passt. Dich zwingt niemand, mir oder anderen zu helfen. Wenn es nur deine Laune beeinträchtigt, dann verzichte ich gerne auf deine Hilfe. Danke für deine bisherigen Anregungen.

Das Einfassen von \AtBeginDocument durch \makeatletter und \makeatother funktioniert nicht, wie folgender Code zeigt:
\documentclass[english,a4paper,nologo,bigfont,notitle]{europasscv}
\usepackage[english]{babel}

\makeatletter
	\AtBeginDocument{
		\fancypagestyle{ecvfancy}{
		\setlength{\headheight}{13.5pt}
		% \setlength{\footskip}{8.4pt}
		\fancyhead{}
		\fancyhead[R]{
		\raggedleft \selectecvfont \textcolor{ecvhighlightcolor}{}
		}
		\fancyhead[L]{
  		\setlength{\difflength}{\ecv@leftcolwidth}
  		\addtolength{\difflength}{-0.6\ecv@logowidth}
  		\noindent
  			\begin{minipage}{0.5\textwidth}
    		\noindent\makebox[\ecv@leftcolwidth][l]{\noindent\raisebox{-6.5pt}[0pt][0pt]{\if@ecvlogo\includegraphics[width=0.6\ecv@logowidth]{europasslogo2013.pdf}\else \hspace{0.6\ecv@logowidth}\fi}\hspace{\difflength}\hspace{\ecv@colsep}{\ifx\@empty\ecv@notitle \empty \else \ecvcoloredtitle \fi}}
 			\end{minipage}
  		}
	}
}
\makeatother

\ecvname{Katie Smith}

\begin{document}
  \begin{europasscv}
  \ecvpersonalinfo
  \pagebreak
  Content
  \end{europasscv}

\end{document}

ich meine ja nur

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von ich meine ja nur »

Es geht nicht um meine Laune. Es ist einfach in deinem eigenen Interesse, es allen Helfern möglichst leicht zu machen, nicht nur mir. Dank deines vollständigen Minimalbeispiels, schlage ich folgendes vor:
\documentclass[english,a4paper,nologo,bigfont,notitle]{europasscv}
\usepackage[english]{babel}

\AtBeginDocument{%
	\fancyhead[R]{%
	    \raggedleft \selectecvfont \textcolor{ecvhighlightcolor}{}%
	}%
}

\ecvname{Katie Smith}

\begin{document}
  \begin{europasscv}
  \ecvpersonalinfo
  \pagebreak
  Content
  \end{europasscv}

\end{document}

Zoid
Forum-Century
Forum-Century
Beiträge: 104
Registriert: Do 12. Mär 2020, 13:48

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von Zoid »

Vielen Dank für die Lösung des Problems

ich meine ja nur

Re: Umdefinieren von fancyhead in .tex-Dokument aus .cls-Datei

Beitrag von ich meine ja nur »

Nochmal zur Erklärung, warum dein Code nicht funktioniert: Du definierst den Seitenstil ecvfancy um, nachdem er bereits aktiviert wurde. Durch das Umdefinieren, wird die neue Definition aber nicht automatisch verwendet. Das passiert erst, wenn man den Seitenstil neu auswählt. Es würde also auch funktionieren, in deinem letzten Beispiel ganz am Ende des \AtBeginDocument-Arguments noch ein \pagestyle{ecvfancy} einzufügen. Ich erwähne das, weil es in anderen Fällen vielleicht tatsächlich sinnvoller ist, den jeweiligen Seitenstil umzudefinieren und ggf. neu zu aktivieren, statt wie in meinem Beispiel einfach den aktuell aktiven Seitenstil abzuändern.

Antworten