Titel und Untertitel im Fließtext einfügen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Titel und Untertitel im Fließtext einfügen

von Bebbi » Mo 30. Jul 2018, 22:41

Johannes_B hat geschrieben:@ heißt bei LaTeX intern. Willst du auf den inneren Bereich zugreifen, ihn ändern, musst du mit makeatletter in den Expertenmodus wechseln.
Ok, ich glaub, so langsam wird mir klar, was da passiert. Ein Befehl kann nicht einfach so einem internen Makro gleichgesetzt werden. Daher öffne ich dafür den Expertenmodus durch \makeatletter … \makeatother und in dem setze ich meinen neuen Befehl gleich mit dem internen Makro.

Eine ganz eigene Welt, in die ich mich hier eindenke. :-)

Danke.

Grüße

Bebbi

von Johannes_B » Mo 30. Jul 2018, 22:29

@ heißt bei LaTeX intern. Willst du auf den inneren Bereich zugreifen, ihn ändern, musst du mit makeatletter in den Expertenmodus wechseln.

von Bebbi » Mo 30. Jul 2018, 22:14

Interessant.

Bei
\makeatletter 
\newcommand*{\mytitle}{\@title}% Hack: Verwendung einer internen Anweisung! 
\makeatother 
gucke ich immer noch ratlos. \title ist ein internes Makro, also für den Endanwender quasi ein Befehl. Der Makroname darf nur Buchstaben enthalten, also Zeichen der Kategorie 11=Buchstaben. Der Makroname ist für mich "title". Ob das sinnvoll ist oder nicht kann ich nicht beurteilen. Aber es klingt irgendwie sinnvoll.

Eine Ausnahme gibt es für das erste Zeichen. Wenn das eine andere Kategorie hat, verdrängt dass den Makronamen, hier ist der Makroname als @, da @ zur Kategorie der sonstigen Zeichen gehört.

Nur stellt sich mir die Frage, wofür den Aufwand hier? "title" besteht doch nur aus Buchstaben.

Damit "@title" der Makroname bleibt, kommt das in eine besondere "Box" \makeatletter … \makeatother, die @ zu einem Buchstaben macht.

Dadurch habe ich für das Makro "\title" den neuen/zusätzlichen Namen "\@title" festgelegt. Auch da bleibt unklar, warum ich das mache.

Vermuten würde ich, dass der Befehl "\title" das interne Makro "\@title" aufruft und @ immer interne Makros kennzeichnet, die hinter den jeweiligen Befehlen stehen.

Grüße

Bebbi

von Gast » Mo 30. Jul 2018, 19:27

Bebbi hat geschrieben:
\subtitle{Mein prägender Untertitel}
\newcommand{\mysubtitle}{\subtitel}
Wie schon der \mysubtitle sagt, …}
Du musst Dir einfach einmal klar machen, was dabei passiert. \subtitle ist bei der verwendeten KOMA-Script-Klasse scrbook eine Anweisung mit Argument. Du definiert \mysubtitle als neue Anweisung, die diese Anweisung \subtitle aufruft¹. Wird dann im Satz \mysubtitle verwendet, wird also letztlich an dieser Stelle \subtilte aufgerufen, das dann ein Argument erwartet.

Damit sollte klar werden, warum der Ratschlag oben auch lautete:
Außerdem kann man einmal definierte Befehle natürlich auch im Argument von anderen Befehlen verwenden.
was auf das inzwischen ebenfalls gezeigt:
\newcommand{\mysubtitle}{Mein prägender Untertitel}
\subtitle{\mysubtitle}
\maketitle
Wie schon der \mysubtitle{} sagt, …
hinaus läuft. Hier wird zunächst einmal der Befehl \mysubtitle mit dem gewünschten Text »Mein prägender Untertitel« definiert. Dieser wird dann mit \subtitle als Untertitel für \maketitle gesetzt und später auch direkt per \mysubtitle im Text ausgegeben.

Übrigens würde bei den KOMA-Script-Klassen² auch:
\documentclass{scrbook}

\makeatletter
\newcommand*{\mytitle}{\@title}% Hack: Verwendung einer internen Anweisung!
\newcommand*{\mysubtitle}{\@subtitle}% Hack: Verwendung einer internen Anweisung!
\makeatother

\begin{document}
\title{Mein toller Buchtitel}
\subtitle{Mein prägender Untertitel}
\author{Ich}
\maketitle

Wie schon der \mysubtitle{} sagt, …
\end{document}
funktionieren. Allerdings werden dabei zwei interne Anweisungen verwendet, was man besser vermeiden sollte. Das \makeatletter wird hier übrigens benötigt, weil das at-Zeichen »@« außerhalb von Klassen und Paketen nicht in Befehlsnamen verwendet werden darf. Erst \makeatletter, das aus dem »@« für TeX einen Buchstaben macht, macht dies möglich. Mit \makeatother wird aus dem »@« dann wieder ein sonstiges Zeichen, die Wirkung von \makeatletter also wieder aufgehoben.Wie schon der \mysubtitle{} sagt, …



Fußnoten:

1 Tatsächlich spricht man bei (La)TeX nicht von aufrufen, sondern davon, dass eine Anweisung (= Makro) zu etwas expandiert. Das liegt daran, dass TeX eine Makrosprache ist. Dabei wird ein Makro immer durch seine zum Zeitpunkt der Expansion gültigen Definition ersetzt = expandiert. Expandiert wird dabei zu unterschiedlichen Zeiten der Code-Verarbeitung, teilweise sehr früh (beispielsweise bei `\edef`), teilweise auch erst sehr spät (beispielsweise beim Schreiben in Hilfsdateien, wie der `aux`-Datei).

2 Bei den Standardklassen würde diese Methode mit dem Hack nicht funktionieren, weil bei den Standardklassen, \@title nach \maketitle als \@empty definiert ist. Damit würde auch \mytitle im Dokument letztlich zu etwas leerem expandieren. Und natürlich gibt es \subtitle bei den Standardklassen gar nicht und würde deshalb zu einem Fehler führen.

von Bebbi » Mo 30. Jul 2018, 18:34

Hallo,

ok. Ich werde dann versuchen, immer auch ein Bsp. anzugeben, auch wenn für mich das eine generelle Frage ist.

Dem Titel nach geht es in meiner Einleitung darum, auch mit KOMA-Script zu arbeiten. Aber bewusst habe ich das noch nicht eingebunden. Nur beim aus dem Buch übernommene Code zu den Kopfzeilen taucht
\KOMAoptions{headsepline=0.8pt,footsepline}
auf. Aber den Anschnitt kann ich auch auskommentieren und das Problem bleibt.

Den Umgang mit den internen Makros verstehe ich gerade noch nicht, aber das wird noch kommen. Nur nicht heute.

Auf jeden Fall muss man es also anders herum machen, als ich dachte (1. Bsp.). Das wäre somit gelöst. Danke. Wichtig war auch noch, dass ich im Text {} nicht vergessen darf.

Damit wäre diese Frage hier gelöst für mich erst einmal. Danke für die Hilfe.

Grüße

Bebbi

von Gast » Mo 30. Jul 2018, 18:00

Bebbi hat geschrieben:ich dachte \subtitle wäre ein feststehender Befehl?
Naja, die Standardklassen (article, book, ...) kennen \subtitle nicht. Selbst wenn wir vermutet hätten, dass Du \subtitle ohne "s" meinst, könnten wir nicht sicher sein, wie der Befehl definiert ist und was er macht. Ich gehe zwar davon aus, dass die meisten Klassen oder Pakete, die ihn definieren, das etwa so machen wie KOMA-Script, aber garantieren kann man das nicht. Wenn Du uns zumindest verraten hättest, dass Du eine KOMA-Klasse nutzt, hätten wir uns diese Nachfrage erspart. Natürlich weiß man als Nutzer nicht unbedingt, welche Dinge wo und von wem definiert sind, aber daher ist ein Minimalbeispiel ja so hilfreich. Dann wissen alle, worüber sie reden.

Wenn man Bartmans Vorschläge richtig verwendet, muss man doch jeden Titel nur einmal angeben
\documentclass{scrbook}

\newcommand{\mytitle}{Mein toller Buchtitel}
\newcommand{\mysubtitle}{Mein prägender Untertitel}
\title{\mytitle}
\subtitle{\mysubtitle}

\begin{document}
\maketitle

Wie schon der \mysubtitle{} sagt, …
\end{document}
\documentclass{scrbook}


\title{Mein toller Buchtitel}
\subtitle{Mein prägender Untertitel}

\makeatletter
\let\mytitle\@title
\let\mysubtitle\@subtitle
\makeatother

\begin{document}
\maketitle

Wie schon der \mysubtitle{} sagt, …
\end{document}
Egal, ob man \maketitle oder titlepage verwendet. Wichtig für das Verständnis ist nur, dass \title und \subtitle nach erfolgreicher Anwendung nicht selbst den Text des Titels bzw. Untertitels beinhalten. Vielmehr schreiben diese Befehle die Titel in ein internes Makro, das dann abgefragt werden kann. Bartmans zweite Lösung macht diese internen Makros auch für den Nutzer zugänglich. Die erste Lösung behilft sich, indem sie schon \title und \subtitle mit einem Makro, das die eigentliche Master-Rolle übernimmt, füttert.
Bebbi hat geschrieben:Ich meinte es so, dass man mehr lernt, wenn man selber auf die Lösung kommt und ich dachte, eine allg. Antwort macht weniger Aufwand.
Mit ersterem magst Du recht haben, die Frage ist aber immer auch, wie man auf welche Lösung kommt. Die offensichtliche Lösung ist nicht immer die eleganteste oder korrekteste Lösung.

Das Problem bei allgemeinen Antworten ist, dass sich fast immer herausstellt, dass nicht wirklich "allgemein" gefragt wird, sondern dass die Fragenden eigentlich einen konkreten Fall im Kopf haben. Das ist natürlich nicht verwerflich, aber ich finde es immer etwas unfair, sich mit einem Hinweis auf eine allgemeine Frage vor einem Minimalbeispiel zu drücken und dann mit einem "es geht nicht" zu antworten. Ganz abgesehen davon, ist nicht immer klar, was eine allgemeine Lösung überhaupt ist. Schon die Wahl der Dokumentenklasse kann Einflüsse auf die Lösung haben - ganz abgesehen von der Wahl der Pakete für bestimmte Aufgaben oder die Auswahl einer Methode, die Titelseite zu setzen (\maketitle vs. titlepage). Vergleiche auch die Sache mit \subtitle. Siehe auch https://tex.meta.stackexchange.com/q/6255/35864 Das TeX-Ökosystem ist so gewachsen, dass es im Allgemeinen verdammt viele Möglichkeiten gibt, eine bestimme Situation herbeizuführen - aber nicht für jede dieser Möglichkeiten ist die beste Lösung dieselbe.

Ich schließe mich meinem Vorredner an, eine ordentliche Einführung in LaTeX zu lesen, kann selten verkehrt sein. Wenn die Anleitung etwas in die Tiefe geht, kann sie Dir auch erklären, warum \newcommand{\mytitle}{\titel} nicht funktioniert.

von Bebbi » Mo 30. Jul 2018, 17:58

Hallo,

ich hatte mehrere Einleitungen angelesen und mich dann für eine entschieden an der ich mich nun entlang arbeiten. Erst alles komplett theoretisch lesen, kann ich nicht. Ich muss da parallel probieren, damit ich noch folgen kann.

In dem aktuellen Dokument nutzte ich nicht \maketitle. Das würde keinen Sinn machen. Da ich - das war mir nicht klar - \title etc. offensichtlich nicht zwingend definieren muss, ginge es hier also ohne. Meine Frage zielt also nun darauf ab, wie ich damit umgehen würde, wenn ich \maketitle nutze.

Aber ich befürchte, ich kann mich nicht verständlich genug ausdrücken, was ich will.
Anonymous hat geschrieben: Außerdem kann man einmal definierte Befehle natürlich auch im Argument von anderen Befehlen verwenden.
Und wie funktioniert das in diesem Fall, dass \subtitle Argument von \mysubtitle wird? Das ging ja nicht bei mir, was Anlass dieser Diskussion war.

Danke für die Geduld.

Grüße

Bebbi

von Gast » Mo 30. Jul 2018, 17:28

Oben schreibst Du genau das Gegenteil:
Ich nutze \begin{titlepage} und \end{titlepage}
Du nutzt ja wohl kaum sowohl \maketitle als auch \begin{titlepage}…\end{titlepage}. Falls doch, zeige und bitte wie und erkläre warum. In 90% der Fälle, die ich bisher gesehen habe, war es entweder falsch oder wenig sinnvoll.

Falls nicht, ordne bitte Deine Frage und ggf. Deine Gedanken. Widersprüche in Fragen oder Diskussionen dazu verwirren die Helfer, erschweren die Arbeit und provozieren auf allen Seiten am Ende nur Frust.

Außerdem kann man einmal definierte Befehle natürlich auch im Argument von anderen Befehlen verwenden.

Hast Du schon eine ausführliche LaTeX-Einführung gelesen? Wenn nicht, macht das besser mal. Das hilft beim Verständnis für LaTeX und damit auch beim Verstehen unserer Antworten ungemein. Ohne das, macht die Benutzung von LaTeX auch eher wenig Spaß. Die Zeit dafür ist gut investiert!

von Bebbi » Mo 30. Jul 2018, 17:14

Anonymous hat geschrieben:Bartman hat doch in viewtopic,p,101679.html#101679 genau gezeigt, wie das geht. Warum verwendest Du das nicht?
Weil ich dann ja zwei Titel-Defintionen habe.
  • \subtitle
  • \mysubtitle
Wenn man \begin{titlepage} … \end{titlepage} nutzt, ist das egal. Dann definiert man eben \subtitle erst gar nicht. Wenn man aber \maketitle nutzt, entsteht das Risiko, dass man durch Anpassungen/Korrekturen ... zwei Varianten des Untertitels bekommt. Das will ich verhindern. Außerdem ist es ja langfristiger effektiver, nur an einer Stelle Titel, Untertitel etc. definieren zu müssen.

Grüße

Bebbi

von Gast » Mo 30. Jul 2018, 16:54

Bartman hat doch in viewtopic,p,101679.html#101679 genau gezeigt, wie das geht. Warum verwendest Du das nicht?

Dass \title nicht der Titel ist, der bei \title{…} angegeben wurde, sollte Dir ja wohl klar sein. Und dass \title{…} nur dann sinnvoll ist, wenn man auch \maketitle verwendet, erfährst Du aus der KOMA-Script-Anleitung und wahlweise auf dem KOMA-Script-Buch oder aus jeder ausführlichen LaTeX-Einführung. Wenn Du also etwas lernen willst, dann lies diese.

Nach oben