Verbleibendes zu lösendes Problem

Verbleibendes zu lösendes Problem

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.luain Ihr Overleaf-Arbeitsverzeichnis kopieren (von ctan oder einer anderen Ressource). Führen Sie dann den \write18Befehl 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 filesoder Recompile from scratcheingeben, 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.luain das Arbeitsverzeichnis
  • Öffnen einer Befehlsshell, wechseln Sie zum Dokumentenverzeichnis
  • läuft pdflatexund texluawie 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.luaes dorthin kopiert, was sich auf meiner Distribution unter befindet C:\...\MiKTeX2\scripts\songs(ein Link oder das Setzen der PATHVariable 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

Los geht’s: ErgebnisLokal

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.luahat 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...

umseitig

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 overleafbin ich auf diesen Tweet gestoßen:

twittern

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 :)

verwandte Informationen