Оставшаяся проблема для решения

Оставшаяся проблема для решения

Я создаю сборник песен с помощью songspackage. Я новичок в LaTex и решил использовать overleaf, который хорошо работает, единственная проблема, с которой я столкнулся, это индекс. Я использую старый базовый шаблон для проекта, в котором уже был рабочий файл индекса, который я могу отобразить, но индекс не обновляется.

При поиске в документации я пришел к выводу, что решение связано со строкой:

texlua songidx.lua titlfile.sxd titlfile.sbx

Но я не могу найти, куда поместить эту строку на обороте. Есть ли способ решить эту проблему или мне нужно научиться анализировать ее локально на моем компьютере?

Обновление: добавил MWE ниже. Этот пример создает либо пустой индекс с текстом: "[Индекс еще не сгенерирован.]", либо если я добавлю idxfile.sbx из более старой версии книги, весь регистр будет выглядеть так, как было много лет назад, а не только две песни в этом примере. Так что очевидно, что idxfile.sbx придется как-то переписать. Теперь MWE, который разделен на два файла min (первый блок) и включенный файл с самими песнями:

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

А включенные песни (Text/bordvisor.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}

решение1

Вы можете скачать и скопировать songidx.luaфайл в рабочую директорию overleaf (из ctan или другого ресурса). А затем использовать \write18для запуска команды texlua songidx.lua idxfile.sxd idxfile.sbx, которая обновит и запишет правильный файл индекса для вас (idxfile.sbx). Я проверил это, к сожалению, вам нужно clear cached filesили Recompile from scratchкаждый раз, чтобы файл обновлялся правильно. У кого-то может быть лучшее решение.

Добавьте следующий код перед \begin{document}:

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

решение2

Вот 90% решения. И да: ключевая проблема близка к тому, что вы подозревали.

Проверка на наличие похожих проблем

Кто уже сообщал о проблемах с песнями и индексом пакета?Глянь сюда. Среди них былрешение, который также, более или менее, описан вгл. 10 руководства по песням:

  • Ключевым моментом здесь является копирование как минимум файла songidx.luaв рабочий каталог.
  • открыв командную оболочку, перейдите в каталог документов
  • работает pdflatexи texluaкак описано в решении несколько раз

Скопировав указанный файл и следуя указанному решению, я смог создать песенник с двумя требуемыми индексами.

Пробую ваш пример на моей локальной установке

Приготовления:

  • из предыдущего анализа я отключил многие части вашего кода, которые не способствовали решению ключевой проблемы создания индекса или могли способствовать ее возникновению
  • Я скопировал songidx.luaтуда, что в моем дистрибутиве находится по адресу C:\...\MiKTeX2\scripts\songs(ссылка или настройка PATHпеременной тоже могут подойти)

Далее я запускаю:

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

Пробую это на Overleaf

Создание проекта и копирование ваших (измененных) файлов не проблема. Однако я не видел, можно ли запустить командную оболочку на Overleaf, и если да, то как.

Конечно, простого копирования songidx.luaнедостаточно.

Поэтому я попробовал скопировать файлы, созданные локально, и это сработало (не проверял, какие из них действительно нужны). Так что, по крайней мере, это может быть обходным путем для вас:

  • создать индексы на локальной установке
  • скопируйте результат в свой проект Overleaf
  • нехорошо, недостающие 10%, но все равно...

на обороте

Оставшаяся проблема для решения

Как запустить командную оболочку на Overleaf?

  • это возможно?
  • если да: то как?
  • работает ли это также с бесплатной учетной записью?
  • Вам нужно обновиться?
  • можно ли автоматизировать необходимые действия (и адаптировать их к индивидуальным потребностям) с помощью Overleaf?

Возможно, на пути к решению?

В поиске command shell overleafя наткнулся на этот твит:

твит

latexmkrc... что это? По крайней мере, это кажется достаточно важным, чтобы Overleaf опубликовал статью об этомКак использовать latexmkrc с Overleaf.

Вы также можете найти вопросы здесьТеКСе ...

Хорошо, пришло время присоединиться более опытным пользователям :)

Связанный контент