Seite 1 von 1

Problem mit Befehlen! Leider einige feste Vorgaben ...

Verfasst: Sa 11. Jan 2014, 21:56
von timmwerner
Hallo,

beschäftige mich seit Kurzem mit LaTeX und leider stoße ich bei einigen Aufgaben auf Probleme. Es wäre super, wenn Ihr mir helfen könntet.

Es soll eine Layout-Datei (abgabe_layout) geschrieben werden, die immer geladen wird, wenn script1.tex gestartet wird. Einige Angaben sind dann variabel und werden im Script (script1.tex) angegeben. Dieses Script (script1) darf nicht verändert werden! In der Ausgabe sollen die Angaben in der Umgebung (environment) berücksichtigt werden.

abgabe_layout.tex
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ngerman}

% Hier soll dann auch die Umgebung (environment) angelegt werden.
script1.tex
\input{abgabe_layout}
\Dozent{xy}
\Institut{xy}

\begin{environment}

\end{environment}
So, Problem ist nun, dass ich nicht weiß, wie ich die Definitonen von \Dozent{xy} und \Institut{xy} in meine Umgebung reinbekomme. Angeblich soll das irgendwie über saveboxen gehen, aber da in script1.tex nichts verändert werden darf, weiß ich nicht wie ich diese abrufen/abspeichern kann.

Habt ihr eine Idee?

Vielen Dank
Timm

Verfasst: Sa 11. Jan 2014, 22:08
von Johannes_B
Leider habe ich momentan nicht den geringsten Schimmer was du vor hast. Kannst du das eventuell näher erklären, idealerweise mit einem Minimalbeispiel?

Normalerweise ist die Datei, welche ein \documentclass{<klasse>} enthält die Hauptdatei, welche selbst alle anderen Dateien lädt. Ein »Layout« kann in einer Paketdaatei (.sty) abgelegt sein.

Was hast du denn mit deinen Makros \Dozent{xy} vor? Ohne das zu wissen ist es schwer eine mögliche Lösung zu nennen.

Wenn du Änderungen in script1 darstellen willst, ist das dann nicht widersprüclich mit dem Vorsatz des »es darf nichts geändert werden«?

Bester Anlaufpunkt wäre Übrigens der Autor/Maintainer der Ausgangsdateien, falls verfügbar.

Und zu gute letzt: Minimale Vorlage vs. maximale Probleme

Verfasst: Sa 11. Jan 2014, 22:50
von timmwerner
Hallo,

ja, hab mir schon ein bisschen gedacht, dass es schwer ist, mein Anliegen zu verstehen. Ich versuchs nochmal:

Also:

Ziel ist es, dass eine Layout-Datei im *tex.-Format entwickelt wird, die für das Erstellen von z.B. Klausuren genutzt werden soll.

Somit soll bsp. aus der Datei Klausur1.tex ein vollwertiges, formatiertes Dokument entstehen. Hier sollen dann nur noch die individuellen Angaben (xy) angegeben werden und in den Umgebungen berücksichtigt werden.

Klausur1.tex
\input{abgabe_layout} % Hier eigene Layout-Datei einbinden!

\Dozent{xy}
\Institut{xy}

\begin{document}

\begin{Klausur}
\end{Klausur}

\end{document}

Durch \input{abgabe_layout} soll die Formatierung inkl. Umgebung geladen werden

abgabe_layout.tex
\documentclass[12pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ngerman}

\newenvironment{Klausur}[1][]{
\Institut vertreten durch {\Dozent} wird die Klausur stellen. ...
}{..}
So, jetzt muss ich natürlich die Befehle \Dozent und \Institut in abgabe_layout.tex durch \newcommand... oder halt über saveboxen definieren. Allerdings werden die Argumente der Befehle in Klausur1.tex definiert und sollen beim Aufruf von \begin{Klausur} berücksichtigt werden.


Die Datei Klausur1.tex soll nicht verändert werden.

Hilft das?

Besten Gruß
Timm

Verfasst: Sa 11. Jan 2014, 23:06
von Johannes_B
Wenn in Klausur1.tex die Klausur erstellt wird, dann wird diese doch auch geändert?

Oder möchtest du vielmehr ausdrücken, dass die Layoutdatei implementiert wird, ohne Code in Klausir1.tex zu hinterlassen, welcher den Endnutzer verwirren könnte?

Übrigens, du musst das Rad nicht neu erfinden:
exsheets
exam
Topic exam bei CTAN

Da du neu bei (La)TeX bist, empfehle ich dir in aller Ruhe ein Einführung zu lesen. Du musst ein wenig Zeit investieren, sparst im nachhinein aber umso mehr.


Schau doch auch mal bei TeXWelt vorbei

Verfasst: Sa 11. Jan 2014, 23:37
von timmwerner
Oder möchtest du vielmehr ausdrücken, dass die Layoutdatei implementiert wird, ohne Code in Klausir1.tex zu hinterlassen, welcher den Endnutzer verwirren könnte?
Genau!
Übrigens, du musst das Rad nicht neu erfinden:
Leider MUSS ich dies für die Uni machen ...

[/quote]

Verfasst: Sa 11. Jan 2014, 23:44
von Johannes_B
Du kannst doch aber diese Pakete und Klassen nutzen, musst also keine Umgebung Klausur definieren.

Wenn sie unbedingt »Klausur« heißen soll, dann definiere eine Umgebung, welche im Hintergrund eine schon fertige aufruft.

Verfasst: So 12. Jan 2014, 11:41
von cgnieder
Es wäre hilfreich, Du würdest uns sowohl gewünschten Output sowie den gewünschten Input erklären. Ich habe nach Deinen Posts immer noch keine Idee, wie die Dokumentendatei aussehen soll oder wie das fertige PDF nachher aussehen soll...

Wenn Du Befehle ähnlich wie \author oder \title haben möchtest, dann ist folgendes normalerweise das Grundprinzip:
\documentclass{article}
\usepackage[ngerman]{babel}

\makeatletter
\newcommand*\@Dozent{\@latex@warning@no@line{No \noexpand\Dozent given}}
\newcommand*\@Institut{\@latex@warning@no@line{No \noexpand\Institut given}}

\newcommand*\Dozent[1]{\gdef\@Dozent{#1}}
\newcommand*\Institut[1]{\gdef\@Institut{#1}}
% wenn man das in der Präambel setzen /soll/:
% \@onlypreamble\Dozent
% \@onlypreamble\Institut

\newenvironment{Klausur}
  {\@Institut\ vertreten durch \@Dozent\ wird die Klausur stellen.  \ldots}
  {%
    % die Bedeutung der internen Befehle löschen wenn gewünscht (kann auch am
    % Anfang der Umgebung nach Verwendung geschehen:
    \global\let\@Institut\relax
    \global\let\@Dozent\relax
  }
\makeatother

\Institut{Tardis}
\Dozent{Dr.~Who}

\begin{document}

\begin{Klausur}
  Bla Bla Blub
\end{Klausur}

\end{document}
Grüße