Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Wrapper-Klasse

  1. #1
    Registrierter Benutzer Avatar von André25
    Registriert seit
    19.08.2010
    Beiträge
    157

    Wrapper-Klasse

    Hallo Freunde!

    Die hilfsbereiten Kollegen Schweinebacke und sommerfee haben mich vor nicht allzu langer Zeit davon überzeugt wie wenig sinnvoll es ist Dokumentklassen anzupassen und statt dessen eine Wrapper-Klasse anzulegen.

    Allerdings bin ich damit noch nicht sehr weit gekommen. Deshalb hier einfach mal die Frage, wie ich in den folgenden zwei Code-Beispielen aus der Dokumentenklasse...

    Code:
    \captionsetup[table]{position=above,skip=0pt,labelformat=tablelabel,labelsep=newline,textformat=tabletext}
    ...einmal den Wert von "skip=0pt" auf "skip=10pt"...

    Code:
    \def\TPT@doparanotes{\par\vspace{0\baselineskip}
    ...und das andere Mal von "\vspace{-.5\baselineskip}" auf "\vspace{0\baselineskip}" setzen kann?! Das geht doch sicher auch in meiner Präambel? Was muss ich dafür eingeben? Geht das so einfach (wie ich mir das denke)?

    Wenn ich einmal ein Beispiel habe, kann ich das gut auf andere Fälle adaptieren...

    Falls irgendjemand zu dem Thema einen Link hat od. eine Dokumentation kennt, kann mir das auch helfen.

    Vielen Dank und liebe Grüße,

    André
    Fedora 20 64 bit :: Gnome 3.10.2 | TeX Live 2014 | TeXstudio
    Windows 7 Professional x64 | MiKTeX 2.9 | TeXstudio (mit Sumatra PDF

    ¹Anleitung

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von André25 Beitrag anzeigen
    ...einmal den Wert von "skip=0pt" auf "skip=10pt"...
    Code:
    \captionsetup[table]{skip=10pt}
    (Werte, die mit \captionsetup gesetzt worden sind, kann man mit einem erneuten \captionsetup überschreiben. Alternativ kann man auch gesetzte Werte u.U. mit \clearcaptionsetup entfernen. Siehe Beschreibung von \captionsetup, die in der caption-Paketdoku zu finden ist.)

    ...und das andere Mal von "\vspace{-.5\baselineskip}" auf "\vspace{0\baselineskip}" setzen kann?!
    Code:
    \def\TPT@doparanotes{\par\vspace{0\baselineskip}...
    oder besser

    Code:
    \renewcommand\TPT@doparanotes{\par\vspace{0\baselineskip}...
    (Eine Definition mit \def oder \newcommand kann man mit \def oder \renewcommand überschreiben. Ggf. kann man alte Definitionen mit \let sichern, damit man sie innerhalb seiner eigenen Umdefinitionen verwenden kann.)

    Geht das so einfach (wie ich mir das denke)?
    Um das zu beantworten, müssten wir erstmal wissen, wie du dir das denkst.

    Zur Doku: 1. clsguide ("texdoc clsguide") 2. Ein LaTeX-Buch, wo auch \newcommand, \newenvironment etc. beschrieben ist. 3. Ggf. ein TeX-Buch, was auch für Entwickler taugt, z.B. "TeX by Topic", welches als PDF im Netz gibt und auch TeXlive beiliegt ("texdoc texbytopic").
    Geändert von sommerfee (09-01-2012 um 19:42 Uhr)

  3. #3
    Registrierter Benutzer Avatar von André25
    Registriert seit
    19.08.2010
    Beiträge
    157
    Hallo sommerfee!

    Danke für die Tipps!

    Zitat Zitat von sommerfee Beitrag anzeigen
    Um das zu beantworten, müssten wir erstmal wissen, wie du dir das denkst.
    Das meinte ich mit "so einfach". Und "so einfach" geht es ja auch - sprich einfach überschreiben.

    Zitat Zitat von sommerfee Beitrag anzeigen
    Code:
    \captionsetup[table]{skip=10pt}
    Das geht ja echt wunderbar - "so einfach" wie ich mir das erhofft/gedacht hatte.

    Zitat Zitat von sommerfee Beitrag anzeigen
    Code:
    \def\TPT@doparanotes{\par\vspace{0\baselineskip}...
    oder besser

    Code:
    \renewcommand\TPT@doparanotes{\par\vspace{0\baselineskip}...
    Aber das funktioniert nicht. Da erhalte ich "! LaTeX Error: \TPT undefined." Auch wenn ich größere Teile aus der Dokumentenklasse nehme (falls noch irgendwelche Teile fehlen), kommen Fehlermeldungen.

    Danke auch für die Literaturempfehlungen. Ich habe mir ja auf Anraten von Schweinebacke den LaTeX-Begleiter zugelegt und darin werde ich sicher auch (irgendwann mal) fündig. Aber der ist ja sooo dick - ob ich das in diesem Leben noch schaffe, wer weiß, wer weiß.

    Grüße, André
    Fedora 20 64 bit :: Gnome 3.10.2 | TeX Live 2014 | TeXstudio
    Windows 7 Professional x64 | MiKTeX 2.9 | TeXstudio (mit Sumatra PDF

    ¹Anleitung

  4. #4
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von André25 Beitrag anzeigen
    Aber das funktioniert nicht.
    Das funktioniert nur innerhalb einer Dokumentenklasse oder eines Paketes. Ansonsten muß man \makeatletter davor und \makeatother dahinterschreiben:

    Code:
    \makeatletter
    \renewcommand\TPT@doparanotes{...}
    ...
    \makeatother
    Siehe auch: http://projekte.dante.de/DanteFAQ/Verschiedenes#53

    Hintergrund ist der, daß Befehlsnamen mit @ nur innerhalb von Dokumentenklassen und Paketen verwendet und (um)definiert werden sollten. (Mit \makeatletter...\makeatother klappt es aber auch in einem Dokument.) Damit ist quasi eine Zweiteilung des Namensraumes der Makros vorgesehen: Diejenigen mit @ als interne Makros einer Dokumentenklasse bzw. eines Paketes, und diejenigen ohne @ als Makros, die den Benutzern zur Verfügung gestellt werden bzw. von Benutzern innerhalb des Dokumentes definiert werden. Damit sollen einerseits Namenskonflikte zwischen Klassen/Paketen und Definitionen in den Dokumenten vermieden werden, außerdem soll vermieden werden, daß Dokumente die internen Makros verwenden. Denn anders als die dokumentierten Makros (ohne @) möchte man sich als Autor gerne die Möglichkeit offenhalten, interne Makros in der nächsten Version nach Bedarf zu ändern, ohne daß deswegen vorhandene Dokumente nicht mehr übersetzbar sind. (Manche internen Makros sind aber auch in der Code-Dokumentation zum Gebrauch durch andere Pakete bzw. Dokumentenklassen dokumentiert. Im Zweifelsfalle am besten beim Autor der Dokumentenklasse bzw. des Paketes nachfragen.)

    Und damit es zwischen Dokumentenklassen/Paketen und anderen Paketen keine Konflikte gibt, hat es sich eingebürgert, den Namen der Klasse bzw. des Paketes dem @ in irgendeiner Form voranzustellen. So heißen die internen Makros des caption-Paketes \caption@..., diejenigen von KOMA-Script \scr@... usw. \TPT@... dürfte für ein internes Makro des ThreePartTable-Paketes stehen, nehme ich zumindest an.
    Geändert von sommerfee (09-01-2012 um 21:47 Uhr)

  5. #5
    Registrierter Benutzer Avatar von André25
    Registriert seit
    19.08.2010
    Beiträge
    157
    Zitat Zitat von sommerfee Beitrag anzeigen
    Ansonsten muß man \makeatletter davor und \makeatother dahinterschreiben
    Tausend Dank - nun läuft es so, wie es laufen soll - und (so einfach) wie ich mir das gedacht habe. Zudem kann ich, sollte ich weitere Dinge anpassen wollen, dank Deiner hervorragenden Erklärung die Beispiele adaptieren.

    Zitat Zitat von sommerfee Beitrag anzeigen
    \TPT@... dürfte für ein internes Makro des ThreePartTable-Paketes stehen, nehme ich zumindest an.
    Ja, so isses.

    DANKE sagt André
    Fedora 20 64 bit :: Gnome 3.10.2 | TeX Live 2014 | TeXstudio
    Windows 7 Professional x64 | MiKTeX 2.9 | TeXstudio (mit Sumatra PDF

    ¹Anleitung

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •