Problema restante por resolver

Problema restante por resolver

Estoy creando un cancionero usando el paquete de canciones. Soy muy nuevo en LaTex y opté por usar el dorso, lo cual funcionó bien, el único problema que realmente tengo es con el índice. Estoy usando una plantilla base más antigua para el proyecto que ya tenía un archivo de índice funcional que puedo mostrar, pero el índice no se actualiza.

Mientras busco la documentación, creo que la solución está conectada a la línea:

texlua songidx.lua titlfile.sxd titlfile.sbx

Pero parece que no puedo encontrar ningún lugar donde poner esa línea al dorso. ¿Hay alguna forma de resolver esto o tengo que aprender a analizarlo localmente en mi computadora?

Actualización: Se agregó un MWE a continuación. Este ejemplo produce un índice vacío con el texto: "[Índice aún no generado.]" o si agrego el idxfile.sbx de una versión anterior del libro, todo el registro aparece como estaba hace años y no solo los dos. canciones en este ejemplo. Claramente, el idxfile.sbx tendría que reescribirse de alguna manera. Ahora al MWE que está dividido en dos, un archivo min (primer bloque) y un archivo incluido con las canciones en sí:

\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}

Y las canciones incluidas (Text/bordvisor.tex) están aquí:

\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}

Respuesta1

Puede descargar y copiar el songidx.luaarchivo en su directorio de trabajo al dorso (de ctan u otro recurso). Y luego use \write18para ejecutar el comando texlua songidx.lua idxfile.sxd idxfile.sbxque actualizará y escribirá el archivo de índice correcto (idxfile.sbx). He probado esto, desafortunadamente, es necesario clear cached fileso Recompile from scratchcada vez para que el archivo se actualice correctamente. Alguien puede tener una mejor solución.

Agregue el código de seguimiento antes \begin{document}:

\write18{texlua songidx.lua idxfile.sxd idxfile.sbx}

Respuesta2

Aquí tienes el 90% de una solución. Y sí: el problema clave se acerca a lo que sospechabas.

Comprobando problemas similares

¿Quién ya ha informado de problemas con el paquete de canciones y el índice?Mira aquí. Entre ellos estaba unsolución, que también se describe, más o menos, encap. 10 del manual de canciones:

  • La clave aquí es copiar al menos el archivo songidx.luaal directorio de trabajo.
  • abriendo un shell de comandos, configúrelo en el directorio de documentos
  • corriendo pdflatexy texluacomo se describe en la solución varias veces

Copiando dicho archivo, y siguiendo dicha solución pude generar un cancionero con los dos índices deseados.

Probando su ejemplo en mi instalación local

Preparativos:

  • A partir del análisis anterior, desactivé muchas partes de su código, que no contribuyeron al problema clave de crear un índice o podrían haber contribuido al problema.
  • Copié songidx.luaallí, que en mi distribución está en C:\...\MiKTeX2\scripts\songs(un enlace o configurar la PATHvariable también podría funcionar)

A continuación ejecuto:

  • ...\songBookIndex>pdflatex songBookIndex.tex
  • ...\songBookIndex>texlua songidx.lua idxfile.sxd
  • ...\songBookIndex>pdflatex songBookIndex.tex

Ahí tienes: resultadoLocal

canciónBookIndex.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}

Probando esto al dorso

Crear un proyecto y copiar sus archivos (modificados) no hay problema. Sin embargo, no vi si podía ejecutar un shell de comandos en el dorso.

Simplemente copiar songidx.luano funcionó, por supuesto que no.

Así que intenté copiar los archivos creados localmente y funcionó (no inspeccioné cuáles son realmente necesarios). Así que al menos esto podría ser un bypass para ti:

  • crear los índices en una instalación local
  • copie el resultado a su proyecto al dorso
  • no es bonito, falta el 10%, pero en fin...

al dorso

Problema restante por resolver

¿Cómo ejecutar un shell de comandos en el dorso?

  • ¿es eso posible?
  • ¿si es así, cómo?
  • ¿Funciona también con la cuenta gratuita?
  • ¿Necesitas actualizar?
  • ¿Se pueden automatizar las acciones necesarias (y ajustarlas a las necesidades individuales) con Overleaf?

¿Quizás hacia una solución?

Buscando command shell overleafencontré este tweet:

Pío

latexmkrc... ¿qué es eso? Al menos parece lo suficientemente importante como para que al dorso haya un artículo al respecto.Cómo utilizar latexmkrc con Overleaf.

También puede encontrar preguntas aquí enTexto...

Ok, es hora de que se unan algunos usuarios más experimentados :)

información relacionada