![Problema restante para resolver](https://rvso.com/image/472723/Problema%20restante%20para%20resolver.png)
Estou criando um songbook usando o songspackage. Sou muito novo no LaTex e optei por usar o overleaf que funcionou bem, o único problema que realmente tenho é com o índice. Estou usando um modelo base mais antigo para o projeto que já tinha um arquivo de índice funcional que posso exibir, mas o índice não é atualizado.
Ao pesquisar na documentação acredito que a solução esteja ligada à linha:
texlua songidx.lua titlfile.sxd titlfile.sbx
Mas não consigo encontrar nenhum lugar para colocar essa linha no verso. Existe alguma maneira de resolver isso ou preciso aprender como analisá-lo localmente no meu computador?
Atualização: Adicionado um MWE abaixo. Este exemplo produz um índice vazio com o texto: "[Índice ainda não gerado.]" ou se eu adicionar o idxfile.sbx de uma versão mais antiga do livro, todo o registro aparece como era anos atrás e não apenas os dois músicas neste exemplo. Então, claramente, o idxfile.sbx teria que ser reescrito de alguma forma. Agora vamos ao MWE que está dividido em dois: um arquivo mínimo (primeiro bloco) e um arquivo incluído com as próprias músicas:
\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}
E as músicas incluídas (Text/bordvisor.tex) estão aqui:
\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}
Responder1
Você pode baixar e copiar o songidx.lua
arquivo para o diretório de trabalho no verso (do ctan ou outro recurso). E então use \write18
para executar o comando texlua songidx.lua idxfile.sxd idxfile.sbx
que irá atualizar e gravar o arquivo de índice correto para você (idxfile.sbx). Eu testei isso, infelizmente, você precisa clear cached files
ou Recompile from scratch
cada vez para que o arquivo seja atualizado corretamente. Alguém pode ter uma solução melhor.
Adicione o código de acompanhamento antes \begin{document}
:
\write18{texlua songidx.lua idxfile.sxd idxfile.sbx}
Responder2
Aqui está 90% de uma solução. E sim: o problema principal está próximo do que você suspeitava.
Verificando problemas semelhantes
Quem já relatou problemas com músicas de pacotes e índice?Veja aqui. Entre eles estava umsolução, que também é, mais ou menos, descrito emCH. 10 do manual de músicas:
- a chave aqui é copiar pelo menos o arquivo
songidx.lua
para o diretório de trabalho - abrindo um shell de comando, defina o diretório de documentos
- funcionando
pdflatex
etexlua
conforme descrito na solução várias vezes
Copiando o referido arquivo, e seguindo a referida solução consegui gerar um songbook com os dois índices desejados.
Tentando seu exemplo na minha instalação local
Preparativos:
- da análise anterior, desativei muitas partes do seu código, o que não contribuiu para o problema principal de criação de um índice ou pode ter contribuído para o problema
- Copiei
songidx.lua
lá, que na minha distribuição está emC:\...\MiKTeX2\scripts\songs
(um link ou configuração daPATH
variável também pode servir)
Em seguida eu corro:
- ...\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}
Tentando isso no Overleaf
Criar um projeto e copiar seus arquivos (modificados) não tem problema. No entanto, não vi se poderia ou não, e em caso afirmativo, como poderia executar um shell de comando no Overleaf.
Apenas copiar songidx.lua
não resolveu, claro que não.
Então tentei copiar os arquivos criados localmente e funcionou (não inspecionei quais são realmente necessários). Então, pelo menos, isso pode ser um desvio para você:
- crie os índices em uma instalação local
- copie o resultado para o seu projeto Overleaf
- não é legal, os 10% que faltam, mas enfim...
Problema restante para resolver
Como executar um shell de comando no Overleaf?
- isso é possível?
- se sim: como?
- também funciona com a conta gratuita?
- você precisa atualizar?
- as ações necessárias podem ser automatizadas (e ajustadas às necessidades individuais) com o Overleaf?
Talvez em direção a uma solução?
Procurando por command shell overleaf
eu acertei este tweet:
latexmkrc
... o que é isso? Pelo menos parece ser importante o suficiente para que o Overleaf tenha um artigo sobre issoComo usar latexmkrc com Overleaf.
Você também pode encontrar perguntas aqui emTEXSE ...
Ok, é hora de alguns usuários mais experientes participarem :)