![Verbleibendes zu lösendes Problem](https://rvso.com/image/472723/Verbleibendes%20zu%20l%C3%B6sendes%20Problem.png)
Ich erstelle ein Songbuch mit dem Songspackage. Ich bin ein Neuling in LaTex und habe mich für Overleaf entschieden, was gut funktioniert hat. Das einzige Problem, das ich wirklich habe, ist der Index. Ich verwende eine ältere Basisvorlage für das Projekt, die bereits eine funktionierende Indexdatei hatte, die ich anzeigen kann, aber der Index wird nicht aktualisiert.
Beim Durchsuchen der Dokumentation bin ich zu dem Schluss gekommen, dass die Lösung mit der folgenden Zeile zusammenhängt:
texlua songidx.lua Titeldatei.sxd Titeldatei.sbx
Aber ich kann diese Zeile auf der Rückseite nirgends einfügen. Gibt es eine Möglichkeit, das zu lösen, oder muss ich lernen, wie ich es lokal auf meinem Computer analysieren kann?
Update: Unten wurde ein MWE hinzugefügt. Dieses Beispiel erzeugt entweder einen leeren Index mit dem Text: „[Index noch nicht generiert.]“ oder wenn ich die idxfile.sbx aus einer älteren Version des Buches hinzufüge, erscheint das gesamte Register wie vor Jahren und nicht nur die beiden Lieder in diesem Beispiel. Die idxfile.sbx müsste also eindeutig irgendwie neu geschrieben werden. Nun zum MWE, das in zwei Teile aufgeteilt ist, eine Min-Datei (erster Block) und eine Include-Datei mit den Liedern selbst:
\documentclass[9pt,a6paper,openright,twoside]{extbook}
\usepackage[bookmarks]{hyperref}
\usepackage[top=15mm,bottom=15mm,left=15mm,right=10mm]{geometry}
%\addtolength{\oddsidemargin}{5mm}
\usepackage[lyric,noshading]{songs}
\usepackage{amsmath,amssymb}
\usepackage{amsfonts}
\usepackage{fancyhdr}
\usepackage{enumitem}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[swedish]{babel}
\usepackage{calligra}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{imakeidx}
\usepackage{tikz}
\usepackage{textcomp}
\hypersetup{
colorlinks=false,
pdfborder={0 0 0},
}
\setlength{\sbarheight}{0.2pt}
\renewcommand{\stitlefont}{\bf\large}
\renewcommand{\notefont}{\itshape\small}
\makeatletter
\renewcommand\showindex[3][0]{%
\@ifundefined{SB@idxsel@#3}{\SB@errnoidx{#3}}{%
\expandafter\let\expandafter\SB@temp\csname SB@idxsel@#3\endcsname%
\SB@cnt#1\relax%
\ifnum\SB@cnt<\@ne\SB@cnt\SB@temp232\relax\fi%
\expandafter\SB@temp%
\expandafter\SB@maketitleindex%
\expandafter\SB@makescripindex%
\expandafter\SB@makeauthorindex%
\expandafter{\the\SB@cnt}%
{#2}{#3}%
}%
}
\makeatother
%%%% index
\renewcommand{\idxtitlefont}{\sffamily\small}%\itshape}
\renewcommand{\idxlyricfont}{\itshape\small}%\mdseries}
\renewcommand{\idxheadfont}{\calligra\bfseries\Huge}
\noversenumbers
\nosongnumbers
\songcolumns{0}
%%% Don't try to fill up every page
\raggedbottom
\setcounter{secnumdepth}{-1}
%%%%%%% Index
\newindex{index}{idxfile}
\scriptureon
\title{\large Sångbok
\vfill
\small Denna sångbok trycktes i 1000 exemplar. Detta är exemplar Nr. \rule{0.5cm}{0.5pt}
}
\date{}
\begin{document}
\maketitle
\indexsongsas{index}{\thepage}
\pagestyle{plain}
\newpage
\tableofcontents
\include{Text/bordsvisor}
\indexeson
\injectparagraph{%
\center Rak text: Sångtitel\ ~ \emph{Kursiv text: Första raden\\
\begin{center}
\line(1,0){250}
\end{center}}}
\showindex{Register}{index}
\end{document}
Und die enthaltenen Songs (Text/bordvisor.tex) sind hier:
\songchapter{Bordsvisor}
\thispagestyle{empty}
\begin{tikzpicture}[remember picture,overlay]
\node at (current page.center) {\includegraphics[width=\paperwidth]{bilder/kapitel/kap_bord.JPG}};
\end{tikzpicture}
\pagebreak
\begin{songs}{index}
\beginsong{Måltidssång}[sr={Fredmans sång nr 21},by={Text \& musik: Carl Michael Bellman},index={Så lunka vi så småningom}]
\beginverse
Så lunka vi så småningom
från Bacchi buller och tumult,
när döden ropar: Granne kom,
ditt timglas är nu fullt.
Du gubbe fäll din krycka ner,
och du, du yngling, lyd min lag,
den skönsta nymf som åt dig ler
inunder armen tag.
\endverse
\endsong
\beginsong{Spritbolaget}[by={Mel.: Du kära lille snickerbo'},index={Till spritbolaget ränner jag}]
\beginverse
Till spritbolaget ränner jag
och bankar på dess port.
Jag vill ha nå’t som bränner bra
och gör mig skitfull fort.
Expediten sade goddag,
hur gammal kan min herre va’?
Har du nå’t leg ditt fula drägg?
Kom hit igen när du fått skägg.
\endverse
\endsong
\end{songs}
Antwort1
Sie können die Datei herunterladen und songidx.lua
in Ihr Overleaf-Arbeitsverzeichnis kopieren (von ctan oder einer anderen Ressource). Führen Sie dann den \write18
Befehl aus texlua songidx.lua idxfile.sxd idxfile.sbx
, der die richtige Indexdatei (idxfile.sbx) aktualisiert und schreibt. Ich habe dies getestet, aber leider müssen Sie jedes Mal clear cached files
oder Recompile from scratch
eingeben, damit die Datei richtig aktualisiert wird. Jemand hat vielleicht eine bessere Lösung.
Fügen Sie vorher den folgenden Code hinzu \begin{document}
:
\write18{texlua songidx.lua idxfile.sxd idxfile.sbx}
Antwort2
Hier sind 90 % einer Lösung. Und ja: Das Hauptproblem liegt nahe an dem, was Sie vermutet haben.
Suche nach ähnlichen Problemen
Wer hat bereits Probleme mit Paketsongs und Index gemeldet?Siehe hierUnter ihnen war einLösung, die mehr oder weniger auch beschrieben wird inKapitel 10 des Liederhandbuchs:
- Der Schlüssel hier ist das Kopieren von mindestens einer Datei
songidx.lua
in das Arbeitsverzeichnis - Öffnen einer Befehlsshell, wechseln Sie zum Dokumentenverzeichnis
- läuft
pdflatex
undtexlua
wie in der Lösung beschrieben mehrmals
Durch Kopieren der besagten Datei und Befolgen der besagten Lösung konnte ich ein Songbuch mit den beiden gewünschten Indizes erstellen.
Ich probiere Ihr Beispiel auf meiner lokalen Installation aus
Vorbereitungen:
- Aus früheren Analysen habe ich viele Teile Ihres Codes deaktiviert, die nicht zum Hauptproblem der Indexerstellung beigetragen haben oder möglicherweise zum Problem beigetragen haben
- Ich habe
songidx.lua
es dorthin kopiert, was sich auf meiner Distribution unter befindetC:\...\MiKTeX2\scripts\songs
(ein Link oder das Setzen derPATH
Variable würde es auch tun)
Als nächstes führe ich aus:
- …\songBookIndex>
pdflatex songBookIndex.tex
- …\songBookIndex>
texlua songidx.lua idxfile.sxd
- …\songBookIndex>
pdflatex songBookIndex.tex
songBookIndex.tex
\documentclass[9pt,a6paper,openright,twoside]{extbook}
\usepackage[bookmarks]{hyperref}
\usepackage[top=15mm,bottom=15mm,left=15mm,right=10mm]{geometry}
%\addtolength{\oddsidemargin}{5mm}
\usepackage[lyric,noshading]{songs}
%\usepackage{amsmath,amssymb}
%\usepackage{amsfonts}
\usepackage{fancyhdr}
%\usepackage{enumitem}
%\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage[swedish]{babel}
%\usepackage{calligra}
%\usepackage{lmodern}
%\usepackage{graphicx}
%\usepackage{fancyhdr}
%\usepackage{imakeidx}
%\usepackage{tikz}
%\usepackage{textcomp}
\hypersetup{
colorlinks=false,
pdfborder={0 0 0},
}
\setlength{\sbarheight}{0.2pt}
\renewcommand{\stitlefont}{\bf\large}
\renewcommand{\notefont}{\itshape\small}
%\makeatletter
%
%\renewcommand\showindex[3][0]{%
%\@ifundefined{SB@idxsel@#3}{\SB@errnoidx{#3}}{%
%\expandafter\let\expandafter\SB@temp\csname SB@idxsel@#3\endcsname%
%\SB@cnt#1\relax%
%\ifnum\SB@cnt<\@ne\SB@cnt\SB@temp232\relax\fi%
%\expandafter\SB@temp%
%\expandafter\SB@maketitleindex%
%\expandafter\SB@makescripindex%
%\expandafter\SB@makeauthorindex%
%\expandafter{\the\SB@cnt}%
%{#2}{#3}%
%}%
%}
%\makeatother
%%%% index
\renewcommand{\idxtitlefont}{\sffamily\small}%\itshape}
\renewcommand{\idxlyricfont}{\itshape\small}%\mdseries}
\renewcommand{\idxheadfont}{\calligra\bfseries\Huge}
\noversenumbers
\nosongnumbers
\songcolumns{0}
%%% Don't try to fill up every page
\raggedbottom
\setcounter{secnumdepth}{-1}
%%%%%%% Index
\newindex{index}{idxfile}
\scriptureon
\title{\large Sångbok
\vfill
\small Denna sångbok trycktes i 1000 exemplar. Detta är exemplar Nr. \rule{0.5cm}{0.5pt}
}
\date{}
\begin{document}
\maketitle
\indexsongsas{index}{\thepage}
\pagestyle{plain}
\newpage
\tableofcontents
%\include{Text/bordsvisor}
\input{bordsvisor}
%\indexeson
%\injectparagraph{%
%\center Rak text: Sångtitel\ ~ \emph{Kursiv text: Första raden\\
%\begin{center}
%\line(1,0){250}
%\end{center}}}
\showindex{Register}{index}
\end{document}
bordsvisor.tex:
\songchapter{Bordsvisor}
\thispagestyle{empty}
% \begin{tikzpicture}[remember picture,overlay]
% \node at (current page.center) {\includegraphics[width=\paperwidth]{bilder/kapitel/kap_bord.JPG}};
% \end{tikzpicture}
\pagebreak
\begin{songs}{index}
\beginsong{Måltidssång}[sr={Fredmans sång nr 21},by={Text \& musik: Carl Michael Bellman},index={Så lunka vi så småningom}]
\beginverse
Så lunka vi så småningom
från Bacchi buller och tumult,
när döden ropar: Granne kom,
ditt timglas är nu fullt.
Du gubbe fäll din krycka ner,
och du, du yngling, lyd min lag,
den skönsta nymf som åt dig ler
inunder armen tag.
\endverse
\endsong
\beginsong{Spritbolaget}[by={Mel.: Du kära lille snickerbo'},index={Till spritbolaget ränner jag}]
\beginverse
Till spritbolaget ränner jag
och bankar på dess port.
Jag vill ha nå’t som bränner bra
och gör mig skitfull fort.
Expediten sade goddag,
hur gammal kan min herre va’?
Har du nå’t leg ditt fula drägg?
Kom hit igen när du fått skägg.
\endverse
\endsong
\end{songs}
Ich versuche dies auf Overleaf
Das Erstellen eines Projekts und das Kopieren Ihrer (geänderten) Dateien ist dort kein Problem. Allerdings habe ich nicht gesehen, ob und wenn ja, wie ich eine Befehlsshell auf Overleaf ausführen kann.
Einfaches Kopieren songidx.lua
hat natürlich nicht geholfen.
Ich habe also versucht, die lokal erstellten Dateien zu kopieren, und das hat funktioniert (habe nicht überprüft, welche wirklich benötigt werden). Zumindest das hier könnte also ein Bypass für Sie sein:
- Erstellen Sie die Indizes auf einer lokalen Installation
- Kopieren Sie das Ergebnis in Ihr Overleaf-Projekt
- nicht schön, die fehlenden 10 %, aber egal...
Verbleibendes zu lösendes Problem
Wie führe ich eine Befehlsshell auf Overleaf aus?
- ist das möglich?
- Wenn das so ist, wie?
- geht das auch mit dem kostenlosen account?
- müssen Sie ein Upgrade durchführen?
- Können die erforderlichen Aktionen mit Overleaf automatisiert (und an individuelle Bedürfnisse angepasst) werden?
Vielleicht hin zu einer Lösung?
Beim Suchen command shell overleaf
bin ich auf diesen Tweet gestoßen:
latexmkrc
... was ist das? Zumindest scheint es wichtig genug zu sein, dass Overleaf einen Artikel darüber hatSo verwenden Sie latexmkrc mit Overleaf.
Fragen finden Sie auch hier aufTeXSE ...
Ok, es ist Zeit, dass ein paar erfahrenere Benutzer mitmachen :)