Seite 1 von 1

Kapitelnamen (nicht die Kapitelnummer) referenzieren

Verfasst: Do 23. Jul 2009, 16:21
von Chriko
Hallo,

ich schreibe gerade an meiner Dissertation und würde gern den Namen meines Kapitels referenzieren. Der unten folgende Teil meines Quellcodes steht vor meinem gesamten Dokument und liefert mir "Kapitel 1" und nicht wie gewünscht "Kapitel Einleitung". Dass der Befehl \thechapter mir die '1' liefert, weiß ich, aber leider nicht, wie ich aus der '1' meinen Kapitelnamen mache.

Da ich das ganze nicht in jedem Kapitel neu einbinde, scheidet die Lösung mit \nameref des hyperref-Pakts leider aus.

Ich nutze die Dokumentklasse scrbook.
      
\put(60,25){\makebox(\dimexpr
\textwidth-20\unitlength\relax\@gobble,\ht\strutbox\@gobble)[l]{%
\ \Huge\color{black}\chapapp~\thechapter\autodot
}}%
Wenn mir da jemand helfen könnte, wäre ich sehr dankbar.

Namen referenzieren. Titel

Verfasst: Fr 24. Jul 2009, 10:16
von DonCube
Ich habe hier gerade irgendwo Namref gelesen? Hast du das shconmal ausprobiert?? Da du mir keinen kompilierbaren Code angegeben hast konnte ich es nicht probieren. Daher muss ich raten.

Gruß
DonCube

Verfasst: Mo 3. Aug 2009, 09:54
von Chriko
Hallo,

ja, den Befehl \nameref habe ich ausprobiert. Der funktioniert auch. Da ich das Layout meines Kapitelanfangs aber vor dem Dokument deklariere, ist \nameref an der Stelle nicht möglich, weil ich dann ja nur einen bestimmten Kapitelnamen auswähle, der in jedem Kapitel identisch ist.

Ich habe hier einmal ein lauffähiges Minimalbeispiel (so hoffe ich) beigefügt.
\documentclass[12pt, a4paper, twoside, openany, headsepline, parskip, normalheadings, pointlessnumbers, liststotoc, bibtotoc, chapterprefix, final]{scrbook}

\usepackage[ngerman]{babel}

\makeatletter
\renewcommand*{\chapterformat}
{
  \begingroup
    \setlength{\unitlength}{1mm}
    \begin{picture}(20,30)(0,5)
      \setlength{\fboxsep}{0pt}
      \put(0,14){\framebox(20,20){}}
      \put(20,24){\line(1,0){\dimexpr \textwidth-20\unitlength\relax\@gobble}}
      \put(0,14){\makebox(17,20)[r]{\fontsize{28\unitlength}{28\unitlength}\selectfont\thechapter\kern+.38em}}
      \put(60,25){\makebox(\dimexpr\textwidth-20\unitlength\relax\@gobble,\ht\strutbox\@gobble)[l]{\Huge\chapapp~\thechapter\autodot}}
      \put(60,15){\makebox(\dimexpr\textwidth-20\unitlength\relax\@gobble,\ht\strutbox\@gobble)[l]{\thechapter\autodot}}
    \end{picture}
  \endgroup
}

\begin{document}
    \chapter{Einleitung}
    Dies die Einleitung.
\end{document}
Gruß,

Chriko

Verfasst: Mo 3. Aug 2009, 11:23
von phi
Ich würde sagen, dass KOMA-Script dafür nicht flexibel genug ist. Du wirst wohl nicht darum herumkommen, die Definition von \@@makechapterhead zu kopieren und entsprechend abzuändern.

Verfasst: Di 4. Aug 2009, 16:20
von Chriko
Und wie kann ich das machen? Ich bin bestenfalls Anfänger und die Anleitung zum Koma-Skript ist meiner Meinung nach nicht wirklich ergiebig für ganz spezielle Probleme.

Verfasst: Do 6. Aug 2009, 15:24
von DonCube
Also irgendwie muss das doch gehen. Ich werde mal schauen das ich mir mal ein wenig Zeit nehme um dem Problem näher auf den Grund zu gehen, und mir gegebenfalls einen kleinen Denkanstoß holen.

Gruß
DonCube

RTFM!

Verfasst: Do 6. Aug 2009, 16:34
von Gast170
Wie direkt in den nameref-FAQ steht, schlägt der Autor vor, in Zukunft mit Hilfe des Pakets zref Namen zu referenzieren:
\usepackage[user,titleref]{zref}
...
\section{hello}\zlabel{sec:one}
The section name is: \ztitleref{sec:one}.

Verfasst: Do 6. Aug 2009, 18:10
von phi
Ja, aber das hilft ja in dem Fall nichts. Wenn man mit nameref oder zref arbeiten will, müssen die Labels eine vorhersehbare Form haben, beispielsweise ein festes Präfix plus die Kapitelnummer, damit man in der gemeinsamen \chapterformat-Deklaration (die nur die Kapitelnummer, aber nicht den Namen kennt) darauf verweisen kann.

Meine Lösung

Verfasst: Mo 8. Jun 2015, 10:48
von Ich
Ich nutze KOMA-Skript und habe zur Verwendung des Kapitelnamens in der Fußzeile den \chapter-Befehl wie folgt umdefiniert.
\let\Chapter\chapter
\newcommand{\Kapitelname}[1]{#1}
\renewcommand{\chapter}[1]{\Chapter{#1}\renewcommand{\Kapitelname}{#1}}
Dann wird der Befehl \Kapitelname für die Fußzeile verwendet.
\cfoot*{\Kapitelname}
Ich hoffe diese Anleitung spart euch Zeit, um Probleme zu lösen die bei mir bisher noch nicht aufgetreten sind.

Vielen Dank!

Mit freundlichem Gruß,
Ich

Verfasst: Mo 8. Jun 2015, 11:41
von Besserwisser
Lieber Gast, du hast leider das Prinzip von \chaptermark, \chaptermarkformat, \leftmark und \rightmark und allgemein das Prinzip der Marken in LaTeX und TeX nicht verstanden. Sonst würdest du korrekterweise dieses für deine Fußzeile verwenden. Will man nur die Nummer loswerden, definiert man schlicht \chaptermarkformat entsprechend um. Will man Nummer und Text trennen, dann verwendet man eine zusätzliche TeX-Marke:
\NeedsTeXFormat{LaTeX2e}[2015/01/01]
\documentclass{scrbook}
%\usepackage{etex}% Falls ein altes LaTeX verwendet wird.
\usepackage[ngerman]{babel}

\usepackage[automark]{scrlayer-scrpage}
\newmarks\currentchapternumber
\clearpairofpagestyles
\let\origchaptermark\chaptermark
\renewcommand*{\chaptermark}[1]{\marks\currentchapternumber{\thechapter}\origchaptermark{#1}}
\renewcommand*{\chaptermarkformat}{}
\ihead{Kapitelnummner: \botmarks\currentchapternumber}
\ohead{Kapiteltext: \leftmark}

\usepackage{blindtext}

\begin{document}
\Blinddocument
\end{document}
Mit der ursprünglichen Frage hat das allerdings genau wie deine Antwort wenig zu tun. Dort geht es nämlich nicht um Kopf oder Fuß, sondern über die unmittelbare Formatierung der Überschrift. Die kann man nicht durch Umdefinierung von \chapterformat so weitreichend ändern, wie der OP das gerne hätte. Dazu muss man in der Tat sehr viel tiefer eingreifen. \chapterformat ist in der Tat nur für die Nummer, nicht aber für Nummer und Text gedacht.

Fazit: Man lasse solche uralten Themen besser ruhen.