Hyperref von

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


Trash_84
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: So 17. Sep 2017, 12:03
Wohnort: Berlin

Hyperref von

Beitrag von Trash_84 »

Hallo zusammen, ich bin echt ratlos :(

Das Problem ist folgendes, ich hab mit glossaries ein Abkürzungsverzeichnis und ein Symbolverzeichnis erstellt, und lasse diese jeweils mit eigenen Styles ausgeben. - soweit passt es auch.

Allerdings verweisen die Hyperlinks der Symbole (hier deltaE) immer auf die erste Seite und nicht auf das Symbolverzeichnis? Und das eben nur bei den Symbolen, die Abkürzungen werden richtig verlinkt (und auch alle anderen Links die ich im Dokument habe - Quellen, Fußnoten, etc.)

Ich habe für das Problem ein MWE erstellt und hoffe sehr das mir hier vlt. ein Spezi weiterhelfen kann :)

hier das Bsp:
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{array}

\usepackage{hyperref}


\usepackage[acronym,nogroupskip,nonumberlist,nomain]{glossaries}
\newglossary[slg]{symbols}{slm}{sbl}{Symbolverzeichnis}

\makeglossaries
 
\newglossaryentry{degvi}{type=symbols,name=$\Delta E$,
user1={MJ},sort=energie differenz grau verbrauch,
description={Differenz graue Energie und Verbrauch zu Produktion des betrachteten Systems}}
 
\newacronym{ipcc}{IPCC}{Intergovernmental Panel on Climate Change}
 
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
 
 
\newglossarystyle{tabx3col}{%
 \renewenvironment{theglossary}%
  {\begin{longtable}{@{}p{0.2\textwidth}@{}p{0.6\textwidth}@{}>{\raggedleft}p{0.2\textwidth}@{}}}% 
% 
%
%\newglossarystyle{tabx3col}{%
 % put the glossary in a longtable environment:
% \renewenvironment{theglossary}%
%  {\begin{longtable}{L{0.2\textwidth}L{0.6\textwidth}R{0.2\textwidth}}}%
  {\end{longtable}}%
 % Set the table's header:
 \renewcommand*{\glossaryheader}{}%
 % No heading between groups:
  \renewcommand*{\glsgroupheading}[1]{}%
 % Main (level 0) entries displayed in a row:
  \renewcommand*{\glossaryentryfield}[5]{%
    \glstarget{##1}{\textbf{##2}}% Name
    & ##3% Description
    & ##5% Page list
    \\% end of row
  }%
 % Sub entries treated the same as level 0 entries:
 %\renewcommand*{\glossarysubentryfield}[6]{%
  %\glossaryentryfield{##2}{##3}{##5}{##6}}%
 %% Nothing between groups:
 %\renewcommand*{\glsgroupskip}{}%
}
 
 
\newglossarystyle{tabx4col}{%
 \renewenvironment{theglossary}%
  {\begin{longtable}{@{}p{0.12\textwidth}@{}p{0.08\textwidth}@{}p{0.6\textwidth}@{}>{\raggedleft}p{0.2\textwidth}@{}}}% 
% 
% 
% 
%\newglossarystyle{tabx4col}{%
 % put the glossary in a longtable environment:
% \renewenvironment{theglossary}%
%  {\begin{longtable}{L{0.1\textwidth}L{0.1\textwidth}p{0.55\textwidth}R{0.2\textwidth}}}%
  {\end{longtable}}%
 % Set the table's header:
 \renewcommand*{\glossaryheader}{}%
 % No heading between groups:
  \renewcommand*{\glsgroupheading}[1]{}%
 % Main (level 0) entries displayed in a row:
  \renewcommand*{\glossaryentryfield}[5]{%
   \glstarget{\textbf{##1}}{\textbf{##2}}% Name
   & $[$\glsentryuseri{##1}$]$% Units
   & ##3% Description
   & ##5% Page list
    \\% end of row
  }%
 % Sub entries treated the same as level 0 entries:
 %\renewcommand*{\glossarysubentryfield}[6]{%
  %\glossaryentryfield{##2}{##3}{##5}{##6}}%
 %% Nothing between groups:
 %\renewcommand*{\glsgroupskip}{}%
}
 
 
\begin{document}
 
\gls{degvi}, \\\gls{ipcc}.
 
\printglossary[type=acronym,style=tabx3col] %Print list of acronyms
\printglossary[type=symbols,style=tabx4col] %Print list of symbols
 
\end{document}


Vielen Dank schonmal :)

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\glstarget{\textbf{##1}}{\textbf{##2} ist falsch, im ersten Argument darf keine Formatierung stehen, benütze \glstarget{##1}{\textbf{##2}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Im folgenden Beispiel wurden veraltete Befehle ersetzt und die Fähigkeiten des Pakets siunitx für die Einheiten im Symbolverzeichnis benutzt.
\documentclass{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{siunitx}% <- eingefügt
\usepackage{hyperref}
\usepackage[
	acronym,
	nogroupskip,
	nonumberlist,
	nomain,
	automake% Beschreibung in der Anleitung nachlesen
]{glossaries}

\sisetup{locale=DE}% <- eingefügt

\newglossary[slg]{symbols}{slm}{sbl}{Symbolverzeichnis}

\makeglossaries

\glssetnoexpandfield{useri}% damit die Befehle von siunitx dem Schlüssel user1 zugewiesen werden dürfen

\newglossaryentry{degvi}{
	type=symbols,
	name=$\Delta E$,
	user1={\si{\mega\joule}},% <- geändert
	sort=energie differenz grau verbrauch,
	description={Differenz graue Energie und Verbrauch zu Produktion des betrachteten Systems}
}
 
\newacronym{ipcc}{IPCC}{Intergovernmental Panel on Climate Change}
 
\newglossarystyle{tabx3col}{%
	\renewenvironment{theglossary}%
	{\begin{longtable}{
		@{}>{\bfseries}p{0.2\textwidth}
		@{}p{0.6\textwidth}
		@{}>{\raggedleft}p{0.2\textwidth}@{}
	}}% 
	{\end{longtable}}%
	% Set the table's header:
	\renewcommand*{\glossaryheader}{}%
	% No heading between groups:
	\renewcommand*{\glsgroupheading}[1]{}%
	% Main (level 0) entries displayed in a row:
	\renewcommand*{\glossentry}[2]{% glossaryentryfield ist veraltet
		\glstarget{##1}{\glossentryname{##1}}
		& \glossentrydesc{##1}
		& ##2\\%
	}
}
 
\newglossarystyle{tabx4col}{%
	\renewenvironment{theglossary}%
	{\begin{longtable}{
		@{}p{0.12\textwidth}
		@{}p{0.08\textwidth}
		@{}p{0.6\textwidth}
		@{}>{\raggedleft}
		p{0.2\textwidth}@{}
	}}% 
	{\end{longtable}}%
	% Set the table's header:
	\renewcommand*{\glossaryheader}{}%
	% No heading between groups:
	\renewcommand*{\glsgroupheading}[1]{}%
	% Main (level 0) entries displayed in a row:
	\renewcommand*{\glossentry}[2]{%
		\glstarget{##1}{\glossentryname{##1}}% Name
		& $\left[\glsentryuseri{##1}\right]$% Units
		& \glossentrydesc{##1}% Description
		& ##2% Page list
		\\% end of row
	}
}
 
 
\begin{document}
\gls{degvi}, \gls{ipcc}
 
\printglossary[type=acronym,style=tabx3col] %Print list of acronyms
\printglossary[type=symbols,style=tabx4col] %Print list of symbols
\end{document}

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Offtopic:

Die Verwendung der eckigen Klammern um die Einheiten ist eigentlich falsch. Richtig verwendet man diese um die Größe, um zu signalisieren, dass es sich nachfolgend um die Einheit dieser handelt. Bei einer Spannung U von 5V schreibt man demnach [U]=V bzw. {U}=5, wenn man nur den Wert der Größe darstellen möchte.

Siehe auch https://de.wikipedia.org/wiki/Physikali ... tenzeichen
Die Darstellung von Einheiten in eckigen Klammern (z. B. „m [kg]“) oder auch in runden Klammern (z. B. „m (kg)“) entspricht hingegen nicht der Norm DIN 1313 und wird in den Empfehlungen zum Einheitensystem SI nicht empfohlen.
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Antworten