Eigene Strukturen verstehen Thema ist als GELÖST markiert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Studi001_Markus

Eigene Strukturen verstehen

Beitrag von Studi001_Markus »

Hallo,

ich möchte für meine Bachelorarbeit den Umgang mit LaTeX lernen und hänge schon etwas länger an folgendem Ausdruck:

\makeatletter
\let\partbackup\l@part
\renewcommand*\l@part[1]{\partbackup{#1}{}}

Diesen Ausdruck findet man fast überall und er hat irgendwas mit der Seitennummerierung zu tun. Ich möchte diesen Ausdruck vor allem verstehen.

\makeatletter weist "@" den \catcode 11 zu.

\let\NEUESMAKRO=\ALTESMAKRO
\let\NEUESMAKRO\ALTESMAKRO

Heißt ja eigentlich auch nur das ein Makro existiert "l@part" (was auch immer diese Makro für eine Funktion haben soll) wessen Funktion nun partbackup zugeschrieben wird.

\renewcommand{\NAME}[ANZAHL]{DEFINITION}
Erstellt nun ein neues Makro mit dem Namen "l@part" mit dem Parameter 1
was die Funktion von partbackup hat und wenn das Makro aufgerufen wird, wird der Parameter dem Makro partbackup übergeben.


Ich will damit nur zeigen, dass ich mich schon durch ein paar Foren und Wikis geklickt habe, aber leider trotzdem noch nicht ganz verstanden habe, was das diese Zeilen genau bedeuten.

Eine freundliche Erklärung würde mir viel Zeit ersparen.
Danke im Voraus


Mit freundlichen Grüßen

Markus

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Woher hast du denn diesen Schnipsel? Ich hab den bisher noch nie gesehen.

l@irgendwas sind grundsätzlich Anweisungen für das jeweilige Element irgendwas in einer Liste (toc beispielsweise).

Schnipsel sind immer irgendie problematisch. Erstell am besten ein Minimalbeispiel und teste an diesem die Funktion aus.

Du solltest übrigens nicht mit solchen Spielereien anfangen, sondern dir zuerst eine Einführung schnappen. Interne Makros kannst du dann ändern, wenn du erfahrener bist. Dann hast du garantiert auch den Unterschied zwischen newcommand und renewcommand verinnerlicht.

Was macht eigentlich \makeatletter
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Studi001_Markus_

Beitrag von Studi001_Markus_ »

Danke für die schnelle Antwort, damit habe ich nicht gerechnet :)

Ich habe mir schon eine Einführung angesehen über Youtube und auch ein Buch gelesen (teilweise) "Abschlussarbeiten und Präsentationen mit LaTeX von Paul Resetarics"

Aber du hast recht damit sollte ich mich erst später beschäftigen, danke :)


Dann beschreibe ich einfach mein Problem:

Ich schaffe es nicht mein Inhaltsverzeichnis mit einer römischen I beginnen zu lassen, es startet immer mit einer röm. II. Es funktioniert wenn ich es über den Befehle \maketitle mache, allerdings habe ich die Titelseite per \input Befehl geladen und schon geht es nicht mehr :(
Hier mein Minimalbeispiel
\documentclass[12pt,a4paper]{report}


\usepackage[utf8, latin1]{inputenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{makeidx}
\usepackage{graphicx}
\usepackage{lmodern}
\usepackage{kpfonts}
\usepackage[left=2.5cm,right=2cm,top=2cm,bottom=4cm]{geometry}



\begin{document}

\input{01_Title}
\pagestyle{empty}

%Seitennummerierung neu beginnen, Zahlen [arabic], röm.Zahlen [roman,Roman], Buchstaben [alph,Alph]
\setcounter{page}{1}
%setcounter hat hier leider garkeine Bedeutung egal ob es hier steht oder nicht
\pagenumbering{Roman}

\tableofcontents

\clearpage
\pagenumbering{arabic}

\chapter{test1}
\section{test1}


\chapter{test2}
\section{test2}



\end{document}
Mit freundlichen Grüßen

Markus

Besserwisser

Beitrag von Besserwisser »

»Minimale Vorlage vs. maximale Probleme« ist übrigens nicht nur als Warnung vor dem Gebrauch von schlechten Vorlagen, sondern insbesondere auch für den Einstieg in die Anfertigung einer wissenschaftlichen Arbeit mit LaTeX sinnvoll.

Achja: Der angegebene Code ist normalerweise unsinnig. \l@part hat zwei Argumente. Das zweite ist die Seitenzahl. Nun wird \l@part so umdefiniert, dass an den ursprünglichen Befehl eine leere Seitenzahl übergeben wird. Allerdings wird das ursprüngliche Argument dabei nicht gelesen und bleibt daher erhalten. Das führt dazu, dass die Seitenzahl noch immer ausgegeben wird, allerdings nicht mehr als Teil des \part-Eintrags ins (Inhalts-)Verzeichnis, sondern einfach so (im Verzeichnis). Das kann niemand wollen.

BTW: Bitte Code markieren wie das auch im Hinweis für Code in Beitrag mit Beispiel direkt über dem Nachrichten-Eingabefeld angegeben ist!

Benutzeravatar
Johannes_B
Moderator
Moderator
Beiträge: 5079
Registriert: Do 1. Nov 2012, 14:55
Kontaktdaten:

Beitrag von Johannes_B »

Ich möchte dir LaTeX for complete novices empfehlen. Da werden auch gleich die KOMA-Klasse n vorgestellt und du ärgerst dich nicht mir den Standardklassen rum.

Zum Thema Seitennummerieung beachte bitte auch How to use pagenumbering

Aber, welche Seitenzahl hat das Inhaltsverzeichnis eigentlich?
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?

Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.

Studi001_Markus__

Beitrag von Studi001_Markus__ »

Vielen Dank an euch beide für die Hilfe

Ich habe mir die beiden Links nun gut angeschaut und bin schon viel weiter :)

Meine Probleme sind dann soweit gelöst.

Danke nochmal!


Mit freundlichen Grüßen

Markus

Antworten