TU-Dresden » Startseite Forum » Forum

TU-Dresden Forum

Aktuelle Zeit: Dienstag 7. Dezember 2021, 16:10

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Montag 30. November 2015, 09:23 
Offline

Registriert: Montag 30. November 2015, 08:32
Beiträge: 4
Guten Morgen,

ich bin neu in Latex, und arbeite mich momentan in TeXstudio mit Miktex 2.9 ein (Win7, 64bit).
Ich nutze das aktuelle tudscr-Paket 2.04b.

Dort ist ja in der Präambel über makeglossaries der Quellcode für das Symbolverzeichnis hinterlegt. Leider übersteigen die dort gegebenen Befehle meinen Horizont etwas.
Laut Lehrstuhlvorgabe sollen Symbole nach griechisch und lateinisch getrennt werden. Wie wäre das mit der tudscrreprt-Vorlage umsetzbar? .

EDIT: Um die Übersichtlichkeit zu erhöhen, habe ich mein Minimalbeispiel entfernt. Falk geht sehr ausführlich auf die Problematik der Symboltrennung ein.

Grüße,
Joker.


Zuletzt geändert von Joker am Freitag 4. Dezember 2015, 08:21, insgesamt 3-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Minimalbeispiel
BeitragVerfasst: Dienstag 1. Dezember 2015, 08:20 
Offline

Registriert: Montag 30. November 2015, 08:32
Beiträge: 4
So sieht mein Quellcode bisher aus:
entfernt

In der Paketdokumentation von glossaries wird auf dieses "sortieren" nach griechischen und lateinischen Lettern eingegangen.
(ftp://ftp.tu-chemnitz.de/pub/tex/macros ... s-user.pdf, Seite 92).

Leider kann ich aber das eine nicht mit dem anderen zusammenbringen, da ich dafür schlicht viel zu wenig von LaTeX verstehe...
Die einfach Definition von Symbolen in der Vorlage tudscrreprt gefällt mir aber sehr gut, ich würde den Quelltext daher gerne behalten.
Kennt sich jemand damit aus, und kann mir weiterhelfen?


Dateianhänge:
Dateikommentar: Die PDF, die aus dem Minimalbeispiel erzeugt wird.
document.pdf [95.96 KiB]
308-mal heruntergeladen


Zuletzt geändert von Joker am Freitag 4. Dezember 2015, 08:23, insgesamt 1-mal geändert.
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Dienstag 1. Dezember 2015, 16:57 
Offline

Registriert: Freitag 9. September 2011, 14:57
Beiträge: 541
Kurze Meldung: Ich werde mir das mal ansehen, ganz einfach und komfortabel umzusetzen ist das aber nicht. Das manuelle Aufteilen der Liste sollte fix gemacht sein, eine automatische Zuweisung der Einträge in griechische und lateinische Symbole ist nicht ganz so trivial.

_________________
TUD-Script-Klassen für das Corporate Design der TU Dresden

Anwenderhandbuch: CTAN-Mirror oder texdoc tudscr
Anwenderleitfaden: CTAN-Mirror oder texdoc treatise
Schriftinstallation: Skripte zum Download

LyX-Layoutdateien und Befehlsvervollständigung für TeXstudio
Übersicht zu allen veröffentlichten Versionen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Mittwoch 2. Dezember 2015, 08:01 
Offline

Registriert: Montag 30. November 2015, 08:32
Beiträge: 4
Vielen Dank, eine manuelle Zuweisung innerhalb der Symboldefinition würde mir auch schon sehr helfen, nur fehlt mir auch da eben die Ahnung zu.

Ich find es klasse, wie viel Zeit du in die Wehwehchen von uns Usern hier im Forum investierst!

LG, Joker.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Donnerstag 3. Dezember 2015, 16:14 
Offline

Registriert: Freitag 9. September 2011, 14:57
Beiträge: 541
Hallo Joker,

danke für die Blumen. Es freut mich sehr, dass mein betriebener Aufwand honoriert wird.

Ich habe eine relativ passable Lösung für dein Problem gefunden und diese auch gleich in den Anwenderleitfaden übernommen. Deshalb gibt's erstmal diesen Teil. Im darauffolgenden Post werde ich dann dein Beispiel nutzen, um die Lösung zu präsentieren und gleich noch die eine oder andere zusätzliche Anmerkung machen:

Unterteilung nach griechischen und lateinischen Symbolen
Oftmals wird es für Abschlussarbeiten verlangt, das Symbolverzeichnis nach griechischen und lateinischen Formelzeichen zu untergliedern. Für die Umsetzung dieser Anforderung ist die zuvor beschriebene Lösung prinzipiell nutzbar, allerdings muss diese etwas erweitert werden.

Realisiert wird das Ganze, indem die zwei Kategorien respektive Elterneinträge greekletters sowie romanletters definiert und sämtliche Formelzeichen einem der beiden als Untereintrag zugeordnet werden.
Code:
\providecommand*\greeklettersname{Greek letters}
\providecommand*\romanlettersname{Roman letters}
\newglossaryentry{greekletters}{%
  type=symbols,%
  name={\greeklettersname},%
  description={\nopostdesc},%
  sort={a}%
}
\newglossaryentry{romanletters}{%
  type=symbols,%
  name={\romanlettersname},%
  description={\nopostdesc},%
  sort={b}%
}

Die Bezeichnungen der beiden Kategorien könnten auch als Parameter von \newglossaryentry mit <Bezeichung>} direkt eingetragen werden. Um bei der Definition jedoch eine gewisse Flexibilität zu gewährleisten, wird dies über die zwei Befehle \greeklettersname sowie \romanlettersname realisiert. Diese werden mit KOMA-Script-Mitteln als sprachabhängige Bezeichner definiert.
Code:
\providecaptionname{%
  american,australian,british,canadian,english,newzealand%
}{\greeklettersname}{Greek letters}
\providecaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\greeklettersname}{Griechische Symbole}
\providecaptionname{%
  american,australian,british,canadian,english,newzealand%
}{\romanlettersname}{Roman letters}
\providecaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\romanlettersname}{Lateinische Symbole}

Für die Ausgabe wird der Glossarstil symbsplitlongtabu in ähnlicher Manier wie die Stile zuvor definiert. Dieser wird darauf ausgelegt, dass alle aufzulistenden Formelzeichen als Untereintrag von einem der beiden zuvor erstellten Elterneinträge angegeben werden. Allerdings ist bei diesem Stil aufgrund der Verwendung von longtabu etwas Aufwand zu betreiben, um die gewünschte Ausgabe zu erhalten. Das grundlegende Problem ist das Setzen von Überschriften und dem folgenden Tabellenkopf innerhalb der Tabelle. Die Erläuterung des Quelltextauszugs erfolgt nach dessen Ausgabe.
Code:
\newglossarystyle{symbsplitlongtabu}{%
  \newcommand*\symbollevel{-1}%
  \renewenvironment{theglossary}{%
    \begin{longtabu}spread 0pt[l]{ccX<{\strut}l}%
  }{%
    \end{longtabu}%
  }%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glsgroupskip}{}%
  \newcommand*\symbolhead{%
    \toprule
    \bfseries Formelzeichen & \bfseries Einheit &
    \bfseries Bezeichnung & \bfseries Seite(n)
    \tabularnewline\midrule
  }%
  \renewcommand*{\glossaryheader}{%
    \endfirsthead%
    \symbolhead\endhead%
    \bottomrule\endfoot%
    \gdef\symbollevel{-1}%
  }%
  \renewcommand*{\glossentry}[2]{%
    \ifglshaschildren{##1}{%
      \ifnum\symbollevel>0\relax%
        \tabularnewline\bottomrule\tabularnewline[\smallskipamount]%
      \fi
      \gdef\symbollevel{0}%
      \tabularnewline[%
        \arraystretch\dimexpr-\ht\strutbox-\dp\strutbox\relax%
      ]%
      \multicolumn{4}{@{}l@{}}{\minisec{\glsentryname{##1}}}%
    }{%
      \GlossariesWarning{%
        There are no childrens for entry ##1.\MessageBreak
        Nothing will be printed. Maybe you should\MessageBreak
        specify ##1 as a child entry.
      }%
    }%
  }%
  \renewcommand*{\subglossentry}[3]{%
    \ifnum\symbollevel=0\relax%
      \tabularnewline[\medskipamount]\symbolhead%
    \else%
      \tabularnewline
    \fi%
    \gdef\symbollevel{##1}%
    \glsentryitem{##2}% Entry number if required
    \glstarget{##2}{\glossentrysymbol{##2}} &
    \glsentryuseri{##2} &
    \glossentryname{##2} &
    ##3%
  }%
}

Der neu definierte Befehl \symbollevel wird benötigt, um bei der Ausgabe zu überprüfen, um es sich beim zuletzt gesetzten Eintrag um einen Elterneintrag (\glossentry) oder Untereintrag (\subglossentry) gehandelt hat. Im Makro \symbolhead wird die Definition für den zu setzenden Tabellenkopf gespeichert. Der Inhalt von \glossaryheader wird direkt zu Beginn der Umgebung theglossary ausgeführt. Dieser wird so umdefiniert, dass die Tabelle keinen Kopf vor der ersten Überschrift erhält, jedoch nach einem Seitenumbruch sehr wohl der Tabellenkopf gesetzt wird. Abgeschlossen wird die Tabelle mit einer Fußlinie.

Danach erfolgt die Formatierung der Einträge. Der Befehl \glossentry setzt Griechische Symbole und Lateinische Symbole sowie gegebenenfalls weitere Elterneinträge als Überschriften. Bevor dies passieren kann wird eine vorher begonnene Tabelle mit einer Fußlinie beendet. Um die Überschrift innerhalb von longtabu linksbündig zu setzen, wird mit \multicolumn gearbeitet. Dieser Befehl muss in der ersten Zelle zwingend als aller erstes genutzt werden. Um dies sicherzustellen, wird zuvor eine neue Tabellenspalte eingefügt. Damit jedoch kein zusätzlicher Leerraum entsteht, wird diese über das optionale Argument nach oben verschoben. Die Einträge für Formelzeichen selber erfolgen mit \subglossentry. Im Gegensatz zum vorher beschriebenen Stil symblongtabu wird zusätzlich der notwendige Tabellenkopf nach der Überschrift gesetzt, falls es sich um den ersten Untereintrags handelt.

Jetzt könnte man den Glossarstil symbsplitlongtabu bereits verwenden und jedem Formelzeichen bei der Definition mit
Code:
\newsymbol[parent=greekletters/romanletters]{...}{...}{...}{...}

eine der beiden Elterneinträge zuweisen. Für wenige Formelzeichen mag dies ausreichen. Komfortabler wäre es natürlich, wenn die Zuweisung zu einer der beiden Kategorien automatisch erfolgen würde. Ein Ansatz für dieses Unterfangen wird folgend vorgestellt.


Es kann nicht garantiert werden, dass dieser Ansatz in jedem Fall und für sämtliche Anwendungsszenarien funktioniert. Für auftretende Probleme bei der Verwendung ist dieser Thread der beste Anlaufpunkt.


Die Grundidee ist, das zu definierende Formelzeichen mit einer Liste der Makros für griechische Buchstaben abzugleichen und so zu entscheiden, in welche der beiden Kategorien das Symbol einzuordnen ist. Hierfür werden nachfolgend eine Liste \greeksymbollist aller griechischen Buchstaben sowie der Befehl \ifisgreeksymbol{<Symbol>}{<Dann>}{<Sonst>} zur Fallunterscheidung definiert. Problematisch dabei ist, dass ein als Argument übergebenes Formelzeichen auch mit diakritische Zeichen und Indizes verwendet werden kann, beispielsweise
Code:
$\dot{\varphi}_{\mathrm{max}}$

Deshalb werden bei der Ausführung von \ifisgreeksymbol temporär alle diakritische Zeichen für den Mathematikmodus unschädlich gemacht und das Argument {<Symbol>} expandiert. Anschließend werden alle Anteile für Hoch- sowie Tiefstellung abgeschnitten und das Resultat mit der Liste \greeksymbollist abgeglichen.
Code:
\makeatletter
\newcommand*\greeksymbollist{}
\def\@tempa#1{\ifdefvoid{#1}{}{\listadd\greeksymbollist{#1}}}
\forcsvlist{\@tempa}{%
  \alpha,\beta,\varbeta,\gamma,\delta,\epsilon,\varepsilon,\zeta,%
  \eta,\theta,\vartheta,\iota,\kappa,\varkappa,\lambda,\mu,\nu,%
  \xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\varsigma,\tau,%
  \upsilon,\phi,\varphi,\chi,\psi,\omega,%
  \Alpha,\Beta,\Gamma,\Delta,\Epsilon,\Zeta,\Eta,\Theta,\Iota,%
  \Kappa,\Lambda,\Mu,\Nu,\Xi,\Omicron,\Pi,\Rho,\Sigma,\Tau,\Upsilon,%
  \Phi,\Chi,\Psi,\Omega%
}
\newcommand*\ifisgreeksymbol[1]{%
  \begingroup%
    \def\@tempa##1{\let##1\@firstofone}%
    \forcsvlist{\@tempa}{%
      \acute,\bar,\breve,\check,\dot,\ddot,\dddot,\ddddot,%
      \hat,\widehat,\grave,\tilde,\widetilde,\vec,%
      \Acute,\Bar,\Breve,\Check,\Dot,\Ddot,\Hat,\Grave,\Tilde,\Vec%
    }%
    \protected@edef\@tempa{#1}%
    \def\@tempb##1_##2\relax{\def\@tempa{##1}}%
    \expandafter\@tempb\@tempa_\relax\relax%
    \def\@tempb##1^##2\relax{\def\@tempa{##1}}%
    \expandafter\@tempb\@tempa^\relax\relax%
    \expandafter\ifinlist\expandafter{\@tempa}{\greeksymbollist}{%
      \aftergroup\@firstoftwo%
    }{%
      \aftergroup\@secondoftwo%
    }%
  \endgroup%
}
\makeatother

Mit \ifisgreeksymbol kann jetzt auf die Art des Symbols getestet. Dies wird innerhalb von \newsymbol genutzt, um den passenden Elterneintrag auszuwählen. Über das optionale Argument kann jederzeit der automatische ermittelte Elterneintrag mit [parent={greekletters/romanletters}] überschrieben werden.
Code:
\newcommand*\symbollettergroup{}
\newcommand*{\newsymbol}[5][]{%
  \ifisgreeksymbol{#4}{%
    \renewcommand*{\symbollettergroup}{greekletters}%
  }{%
    \renewcommand*{\symbollettergroup}{romanletters}%
  }%
  \newglossaryentry{#2}{%
    type=symbols,%
    name={#3},%
    description={\nopostdesc},%
    symbol={\ensuremath{#4}},%
    user1={\ensuremath{\mathrm{#5}}},%
    sort={#2},%
    parent={\symbollettergroup},%
    #1%
  }%
}

_________________
TUD-Script-Klassen für das Corporate Design der TU Dresden

Anwenderhandbuch: CTAN-Mirror oder texdoc tudscr
Anwenderleitfaden: CTAN-Mirror oder texdoc treatise
Schriftinstallation: Skripte zum Download

LyX-Layoutdateien und Befehlsvervollständigung für TeXstudio
Übersicht zu allen veröffentlichten Versionen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Donnerstag 3. Dezember 2015, 17:51 
Offline

Registriert: Freitag 9. September 2011, 14:57
Beiträge: 541
Hallo Joker,

als erstes einmal der Hinweis, dass man LaTeX-Warnungen durchaus ernst nehmen sollte.
  • Das Paket fixltx2e ist obsolet, eine entsprechende Warnung solltest du erhalten. Wenn nicht, dann solltest du deine Distribution aktualisieren.
  • Der Befehl \geometry in der Präambel bewirkt nichts. Falls du unbedingt den Satzspiegel genau so anpassen musst, dann mit \newgeometry nach \begin{document}. Ich würde dir empfehlen, mit dem Paket typearea und speziell mit der Option DIV zu arbeiten
  • Die Option headings gibt es nicht.
  • Das Laden von babel mit der Option german ist Quatsch, wenn du als Klassenoption bereits english,ngerman angibst. Entweder alte (german) oder neue (ngerman) Rechtschreibung!
  • Um den Rahmen um Links zu unterdrücken, kannst du hidelinks als Option an hyperref übergeben.
  • Du solltest nur Pakete laden, die du auch tatsächlich nutzt!

Außerdem hab ich den ganzen unnötigen Kram aus dem Beispiel entfernt. Eventuell werde ich die im Anwenderleitfaden vorgestellten Stile in Zukunft in einem separaten Paket bereitstellen, das wird mittlerweile ganz schön unübersichtlich... So und jetzt das Minimalbeispiel, im Anhang das Ergebnis

Code:
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\documentclass[english,ngerman,fontsize=11pt]{tudscrreprt}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[T1]{fontenc}
\usepackage{babel}

\AfterPackage*{hyperref}{%
\usepackage[%
  automake,%
  % mit Tex Live einfach verwendbar
  %xindy={language=german-din},
  acronym,% Abkürzungen
  symbols,% Formelzeichen
  nomain,% kein Glossar
  translate=babel,%
  nogroupskip,%
  toc,%
  section=chapter,%
  nostyles,%
]{glossaries}
\makeglossaries
}
\AfterPackage*{glossaries}{%
\providecommand*\greeklettersname{Greek letters}
\providecommand*\romanlettersname{Roman letters}
\newglossaryentry{greekletters}{%
  type=symbols,%
  name={\greeklettersname},%
  description={\nopostdesc},%
  sort={a}%
}
\newglossaryentry{romanletters}{%
  type=symbols,%
  name={\romanlettersname},%
  description={\nopostdesc},%
  sort={b}%
}
\providecaptionname{%
  american,australian,british,canadian,english,newzealand%
}{\greeklettersname}{Greek letters}
\providecaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\greeklettersname}{Griechische Symbole}
\providecaptionname{%
  american,australian,british,canadian,english,newzealand%
}{\romanlettersname}{Roman letters}
\providecaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\romanlettersname}{Lateinische Symbole}
\newglossarystyle{symbsplitlongtabu}{%
  \newcommand*\symbollevel{-1}%
  \renewenvironment{theglossary}{%
    \begin{longtabu}spread 0pt[l]{ccX<{\strut}l}%
  }{%
    \end{longtabu}%
  }%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glsgroupskip}{}%
  \newcommand*\symbolhead{%
    \toprule
    \bfseries Symbol & \bfseries Einheit &
    \bfseries Name & \bfseries Seite(n)
    \tabularnewline\midrule
  }%
  \renewcommand*{\glossaryheader}{%
    \endfirsthead%
    \symbolhead\endhead%
    \bottomrule\endfoot%
    \gdef\symbollevel{-1}%
  }%
  \renewcommand*{\glossentry}[2]{%
    \ifglshaschildren{##1}{%
      \ifnum\symbollevel>0\relax%
        \tabularnewline\bottomrule\tabularnewline[\smallskipamount]%
      \fi
      \gdef\symbollevel{0}%
      \tabularnewline[%
        \arraystretch\dimexpr-\ht\strutbox-\dp\strutbox\relax%
      ]%
      \multicolumn{4}{@{}l@{}}{\minisec{\glsentryname{##1}}}%
    }{%
      \GlossariesWarning{%
        There are no childrens for entry ##1.\MessageBreak
        Nothing will be printed. Maybe you should\MessageBreak
        specify ##1 as a child entry.
      }%
    }%
  }%
  \renewcommand*{\subglossentry}[3]{%
    \ifnum\symbollevel=0\relax%
      \tabularnewline[\medskipamount]\symbolhead%
    \else%
      \tabularnewline
    \fi%
    \gdef\symbollevel{##1}%
    \glsentryitem{##2}% Entry number if required
    \glstarget{##2}{\glossentrysymbol{##2}} &
    \glsentryuseri{##2} &
    \glossentryname{##2} &
    ##3%
  }%
}
\defglsentryfmt[symbols]{%
 \ifmmode%
   \glssymbol{\glslabel}%
 \else%
   \glsgenentryfmt~\glsentrysymbol{\glslabel}%
 \fi%
}
}% Ende von AfterPackage*

\makeatletter
\newcommand*\greeksymbollist{}
\def\@tempa#1{\ifdefvoid{#1}{}{\listadd\greeksymbollist{#1}}}
\forcsvlist{\@tempa}{%
  \alpha,\beta,\varbeta,\gamma,\delta,\epsilon,\varepsilon,\zeta,%
  \eta,\theta,\vartheta,\iota,\kappa,\varkappa,\lambda,\mu,\nu,%
  \xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\varsigma,\tau,%
  \upsilon,\phi,\varphi,\chi,\psi,\omega,%
  \Alpha,\Beta,\Gamma,\Delta,\Epsilon,\Zeta,\Eta,\Theta,\Iota,%
  \Kappa,\Lambda,\Mu,\Nu,\Xi,\Omicron,\Pi,\Rho,\Sigma,\Tau,\Upsilon,%
  \Phi,\Chi,\Psi,\Omega%
}
\newcommand*\ifisgreeksymbol[1]{%
  \begingroup%
    \def\@tempa##1{\let##1\@firstofone}%
    \forcsvlist{\@tempa}{%
      \acute,\bar,\breve,\check,\dot,\ddot,\dddot,\ddddot,%
      \hat,\widehat,\grave,\tilde,\widetilde,\vec,%
      \Acute,\Bar,\Breve,\Check,\Dot,\Ddot,\Hat,\Grave,\Tilde,\Vec%
    }%
    \protected@edef\@tempa{#1}%
    \def\@tempb##1_##2\relax{\def\@tempa{##1}}%
    \expandafter\@tempb\@tempa_\relax\relax%
    \def\@tempb##1^##2\relax{\def\@tempa{##1}}%
    \expandafter\@tempb\@tempa^\relax\relax%
    \expandafter\ifinlist\expandafter{\@tempa}{\greeksymbollist}{%
      \aftergroup\@firstoftwo%
    }{%
      \aftergroup\@secondoftwo%
    }%
  \endgroup%
}
\makeatother
\newcommand*\symbollettergroup{}
\newcommand*{\newsymbol}[5][]{%
  \ifisgreeksymbol{#4}{%
    \renewcommand*{\symbollettergroup}{greekletters}%
  }{%
    \renewcommand*{\symbollettergroup}{romanletters}%
  }%
  \newglossaryentry{#2}{%
    type=symbols,%
    name={#3},%
    description={\nopostdesc},%
    symbol={\ensuremath{#4}},%
    user1={\ensuremath{\mathrm{#5}}},%
    sort={#2},%
    parent={\symbollettergroup},%
    #1%
  }%
}
\defcaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\symbolname}{Symbolverzeichnis}


%=============================================

\usepackage{booktabs}
\usepackage{tabu}
\usepackage{longtable}
\usepackage[hidelinks]{hyperref}

\begin{document}
%Definition der Symbole
\newsymbol{ASB}{Wärmeabgebende Oberfläche der Siegelbacke}{A_{SB}}{mm^2}
\newsymbol{TUmin}{minimale Umgebungstemperatur}{T_{Umin}}{^\circ C}
\newsymbol{TSBmax}{maximale Siegelbackentemperatur}{T_{SBmax}}{^\circ C}
\newsymbol{qvpunkt}{%
  flächenspezifische Wärmeverlustleistung%
}{\dot{q}_V}{\frac{W}{m^2}}
\newsymbol{qvspunkt}{%
  flächenspezifische Wärmeverlustleistung durch Strahlung%
}{\dot{q}_{SV}}{\frac{W}{m^2}}
\newsymbol{epsilon}{%
  Stefan-Boltzmann-Konstante%
}{\epsilon}{\frac{W}{m^2\cdot K^4}}

\defcaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\glssymbolsgroupname}{Symbolverzeichnis}
\printsymbols[style=symbsplitlongtabu]%

\chapter{Grundlagen von Entenhausen}   

Dieser Text hat wenig Sinn, außer ein Beispiel zu sein. Es gilt \gls{ASB},
weiterhin \gls{TUmin}, \gls{TSBmax} oder \gls{qvpunkt} mit \gls{qvspunkt} und
schließlich \gls{epsilon}.

\end{document}

Grüße
Falk


Dateianhänge:
Symbols.pdf [87.76 KiB]
307-mal heruntergeladen

_________________
TUD-Script-Klassen für das Corporate Design der TU Dresden

Anwenderhandbuch: CTAN-Mirror oder texdoc tudscr
Anwenderleitfaden: CTAN-Mirror oder texdoc treatise
Schriftinstallation: Skripte zum Download

LyX-Layoutdateien und Befehlsvervollständigung für TeXstudio
Übersicht zu allen veröffentlichten Versionen
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Freitag 4. Dezember 2015, 09:11 
Offline

Registriert: Montag 30. November 2015, 08:32
Beiträge: 4
Hallo Falk,
Tausend Dank! Deine Erklärungen sind ja wirklich sehr ausführlich und der Quelltext aus deinem Minimalbeispiel funktioniert tadellos! Das hätte ich so nie hinbekommen.
Ich habe innerhalb des \AfterPackage*{glossaries}{...} noch den Teil für das Acronym-Verzeichnis ergänzt. Komischerweise konnte TeXstudio das Symbolverzeichnis erst erstellen, nachdem ich die alten Dateien, bis auf .bib und .tex, gelöscht hatte, ein Ausführen von makeglossaries half nicht - nun funktioniert es aber wunderbar!

Ja, im Minimalbeispiel waren wohl einige unnütze packages drin, nächstes Mal versuche ich gründlicher zu sein.
Vielen Dank auch für die Anmerkungen zu meinem Quellcode bezüglich unnötiger packages.

Gruß,
Joker


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Mittwoch 24. August 2016, 14:43 
Offline

Registriert: Mittwoch 24. August 2016, 14:38
Beiträge: 2
Hallo,
ich benutze obigen Quellcode und möchte jetzt ein fett gedruckten griechischen Buchstaben einfügen
Code:
\newsymbol{stress}{stress tensor}{\boldsymbol\sigma}{}

, dabei tritt leider folgender Fehler auf:
Zitat:
! You can't use `macro parameter character #' in math mode.
<recently read> ##

l.77 \newsymbol{stress}{stress tensor}{\sig}{}

Hat jemand eine Idee woran es liegen könnte und wie man es behebt?

Viele Grüße, Toni


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Mittwoch 24. August 2016, 17:23 
Offline

Registriert: Freitag 9. September 2011, 14:57
Beiträge: 541
Hallo Toni,

die Fehlermeldung sieht so aus, als ob du die von glossaries erzeugten Hilfsdateien (*.acn,*.acr,*.sls,*.slo) löschen solltest. Denn die Fehlermeldung mit \newsymbol{stress}{stress tensor}{\sig}{} entspricht ja nicht der Variante, welche du definiert hast. Des Weiteren wird \boldsymbol in der ersten Variante beim Unterscheiden zwischen griechischen und lateinischen Buchstaben nicht ignoriert, weshalb das so von dir definierte Symbol nicht bei den griechischen Buchstaben einsortiert wird. Das folgende Minimalbeispiel erzeugt mit dem Aufruf von pdflatex, makeglossaries und nochmals pdflatex
dies Ausgabe im Anhang.

Grüße
Falk

Code:
\RequirePackage[ngerman=ngerman-x-latest]{hyphsubst}
\documentclass[english,ngerman,fontsize=11pt]{tudscrreprt}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[T1]{fontenc}
\usepackage{babel}

\AfterPackage*{hyperref}{%
\usepackage[%
  % mit Tex Live einfach verwendbar
  %xindy={language=german-din},
  acronym,% Abkürzungen
  symbols,% Formelzeichen
  nomain,% kein Glossar
  translate=babel,%
  nogroupskip,%
  toc,%
  section=chapter,%
  nostyles,%
]{glossaries}
\makeglossaries
}
\AfterPackage*{glossaries}{%
\providecommand*\greeklettersname{Greek letters}
\providecommand*\romanlettersname{Roman letters}
\newglossaryentry{greekletters}{%
  type=symbols,%
  name={\greeklettersname},%
  description={\nopostdesc},%
  sort={a}%
}
\newglossaryentry{romanletters}{%
  type=symbols,%
  name={\romanlettersname},%
  description={\nopostdesc},%
  sort={b}%
}
\providecaptionname{%
  american,australian,british,canadian,english,newzealand%
}{\greeklettersname}{Greek letters}
\providecaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\greeklettersname}{Griechische Symbole}
\providecaptionname{%
  american,australian,british,canadian,english,newzealand%
}{\romanlettersname}{Roman letters}
\providecaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\romanlettersname}{Lateinische Symbole}
\newglossarystyle{symbsplitlongtabu}{%
  \newcommand*\symbollevel{-1}%
  \renewenvironment{theglossary}{%
    \begin{longtabu}spread 0pt[l]{ccX<{\strut}l}%
  }{%
    \end{longtabu}%
  }%
  \renewcommand*{\glsgroupheading}[1]{}%
  \renewcommand*{\glsgroupskip}{}%
  \newcommand*\symbolhead{%
    \toprule
    \bfseries Symbol & \bfseries Einheit &
    \bfseries Name & \bfseries Seite(n)
    \tabularnewline\midrule
  }%
  \renewcommand*{\glossaryheader}{%
    \endfirsthead%
    \symbolhead\endhead%
    \bottomrule\endfoot%
    \gdef\symbollevel{-1}%
  }%
  \renewcommand*{\glossentry}[2]{%
    \ifglshaschildren{##1}{%
      \ifnum\symbollevel>0\relax%
        \tabularnewline\bottomrule\tabularnewline[\smallskipamount]%
      \fi
      \gdef\symbollevel{0}%
      \tabularnewline[%
        \arraystretch\dimexpr-\ht\strutbox-\dp\strutbox\relax%
      ]%
      \multicolumn{4}{@{}l@{}}{\minisec{\glsentryname{##1}}}%
    }{%
      \GlossariesWarning{%
        There are no childrens for entry ##1.\MessageBreak
        Nothing will be printed. Maybe you should\MessageBreak
        specify ##1 as a child entry.
      }%
    }%
  }%
  \renewcommand*{\subglossentry}[3]{%
    \ifnum\symbollevel=0\relax%
      \tabularnewline[\medskipamount]\symbolhead%
    \else%
      \tabularnewline
    \fi%
    \gdef\symbollevel{##1}%
    \glsentryitem{##2}% Entry number if required
    \glstarget{##2}{\glossentrysymbol{##2}} &
    \glsentryuseri{##2} &
    \glossentryname{##2} &
    ##3%
  }%
}
\defglsentryfmt[symbols]{%
\ifmmode%
   \glssymbol{\glslabel}%
\else%
   \glsgenentryfmt~\glsentrysymbol{\glslabel}%
\fi%
}
}% Ende von AfterPackage*

\makeatletter
\newcommand*\greeksymbollist{}
\def\@tempa#1{\ifdefvoid{#1}{}{\listadd\greeksymbollist{#1}}}
\forcsvlist{\@tempa}{%
  \alpha,\beta,\varbeta,\gamma,\delta,\epsilon,\varepsilon,\zeta,%
  \eta,\theta,\vartheta,\iota,\kappa,\varkappa,\lambda,\mu,\nu,%
  \xi,\omicron,\pi,\varpi,\rho,\varrho,\sigma,\varsigma,\tau,%
  \upsilon,\phi,\varphi,\chi,\psi,\omega,%
  \Alpha,\Beta,\Gamma,\Delta,\Epsilon,\Zeta,\Eta,\Theta,\Iota,%
  \Kappa,\Lambda,\Mu,\Nu,\Xi,\Omicron,\Pi,\Rho,\Sigma,\Tau,\Upsilon,%
  \Phi,\Chi,\Psi,\Omega%
}
\newcommand*\ifisgreeksymbol[1]{%
  \begingroup%
    \def\@tempa##1{\let##1\@firstofone}%
    \forcsvlist{\@tempa}{%
      \acute,\bar,\breve,\check,\dot,\ddot,\dddot,\ddddot,%
      \hat,\widehat,\grave,\tilde,\widetilde,\vec,%
      \Acute,\Bar,\Breve,\Check,\Dot,\Ddot,\Hat,\Grave,\Tilde,\Vec%
    }%
    \def\boldsymbol{}%
    \protected@edef\@tempa{#1}%
    \def\@tempb##1_##2\relax{\def\@tempa{##1}}%
    \expandafter\@tempb\@tempa_\relax\relax%
    \def\@tempb##1^##2\relax{\def\@tempa{##1}}%
    \expandafter\@tempb\@tempa^\relax\relax%
    \expandafter\ifinlist\expandafter{\@tempa}{\greeksymbollist}{%
      \aftergroup\@firstoftwo%
    }{%
      \aftergroup\@secondoftwo%
    }%
  \endgroup%
}
\makeatother
\newcommand*\symbollettergroup{}
\newcommand*{\newsymbol}[5][]{%
  \ifisgreeksymbol{#4}{%
    \renewcommand*{\symbollettergroup}{greekletters}%
  }{%
    \renewcommand*{\symbollettergroup}{romanletters}%
  }%
  \newglossaryentry{#2}{%
    type=symbols,%
    name={#3},%
    description={\nopostdesc},%
    symbol={\ensuremath{#4}},%
    user1={\ensuremath{\mathrm{#5}}},%
    sort={#2},%
    parent={\symbollettergroup},%
    #1%
  }%
}
\defcaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\symbolname}{Symbolverzeichnis}


%=============================================

\usepackage{booktabs}
\usepackage{tabu}
\usepackage{longtable}
\usepackage[hidelinks]{hyperref}

\begin{document}
\newsymbol{stress}{stress tensor}{\boldsymbol\sigma}{}
\newsymbol{ASB}{Wärmeabgebende Oberfläche der Siegelbacke}{A_{SB}}{mm^2}
\newsymbol{TUmin}{minimale Umgebungstemperatur}{T_{Umin}}{^\circ C}
\newsymbol{TSBmax}{maximale Siegelbackentemperatur}{T_{SBmax}}{^\circ C}
\newsymbol{qvpunkt}{%
  flächenspezifische Wärmeverlustleistung%
}{\dot{q}_V}{\frac{W}{m^2}}
\newsymbol{qvspunkt}{%
  flächenspezifische Wärmeverlustleistung durch Strahlung%
}{\dot{q}_{SV}}{\frac{W}{m^2}}
\newsymbol{epsilon}{%
  Stefan-Boltzmann-Konstante%
}{\epsilon}{\frac{W}{m^2\cdot K^4}}

\defcaptionname{%
  german,ngerman,austrian,naustrian,swissgerman,nswissgerman%
}{\glssymbolsgroupname}{Symbolverzeichnis}
\printsymbols[style=symbsplitlongtabu]%

\chapter{Grundlagen von Entenhausen}   

Dieser Text hat wenig Sinn, außer ein Beispiel zu sein. Es gilt \gls{ASB},
weiterhin \gls{TUmin}, \gls{TSBmax} oder \gls{qvpunkt} mit \gls{qvspunkt} und
schließlich \gls{epsilon}.

\gls{stress}

\end{document}


Dateianhänge:
symbols.pdf [96.04 KiB]
240-mal heruntergeladen

_________________
TUD-Script-Klassen für das Corporate Design der TU Dresden

Anwenderhandbuch: CTAN-Mirror oder texdoc tudscr
Anwenderleitfaden: CTAN-Mirror oder texdoc treatise
Schriftinstallation: Skripte zum Download

LyX-Layoutdateien und Befehlsvervollständigung für TeXstudio
Übersicht zu allen veröffentlichten Versionen
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: [tudscr] Symbolverz. nach griechisch/lateinisch trennen
BeitragVerfasst: Donnerstag 25. August 2016, 11:49 
Offline

Registriert: Mittwoch 24. August 2016, 14:38
Beiträge: 2
Hallo Falk,

Ich musste nur die eine Zeile \def\boldsymbol{}% ergänzen. Die Fehlermeldung hieß natürlich
Zitat:
! You can't use `macro parameter character #' in math mode.
<recently read> ##

l.77 \newsymbol{stress}{stress tensor}{\boldsymbol\sigma}{}



Vielen Dank für die schnelle Hilfe!
Grüße, Toni


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron