解決すべき残された問題

解決すべき残された問題

songspackage を使用して歌集を作成しています。LaTex は初めてなので、うまく機能する overleaf を使用することにしました。唯一の問題はインデックスです。プロジェクトに古いベース テンプレートを使用していますが、これには表示できる機能的なインデックス ファイルが既に含まれていましたが、インデックスが更新されません。

ドキュメントを検索したところ、解決策は次の行に関連していると思われます:

texlua songidx.lua titlfile.sxd titlfile.sbx

しかし、その行を Overleaf に入力する場所が見つからないようです。これを解決する方法はあるのでしょうか、それとも自分のコンピューター上でローカルに解析する方法を学ぶ必要があるのでしょうか?

更新: 以下に MWE を追加しました。この例では、テキスト「[インデックスはまだ生成されていません。]」を含む空のインデックスが生成されるか、または、本の古いバージョンから idxfile.sbx を追加すると、この例の 2 つの曲だけでなく、レジスタ全体が数年前の状態のまま表示されます。したがって、idxfile.sbx を何らかの方法で書き直す必要があることは明らかです。次に、最小ファイル (最初のブロック) と曲自体を含むインクルード ファイルの 2 つに分割された MWE について説明します。

\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

ファイルをダウンロードして、overleaf の作業ディレクトリにコピーすることができますsongidx.lua(ctan または他のリソースから)。次に、を使用して\write18コマンドを実行しtexlua songidx.lua idxfile.sxd idxfile.sbx、正しいインデックス ファイル (idxfile.sbx) を更新して書き込みます。残念ながら、これをテストしましたが、ファイルを正しく更新するには、毎回またはを実行する必要があります。もっと良い解決策があるかもしれませんclear cached filesRecompile from scratch

次のコードを前に追加します\begin{document}:

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

答え2

ここに解決策の 90 % があります。そして、はい、主要な問題はあなたが疑っていたものに近いです。

同様の問題の確認

パッケージの曲とインデックスに関する問題をすでに報告した人はいますか?こちらをご覧くださいその中には解決これも、多かれ少なかれ、歌集マニュアル第10章:

  • ここで重要なのは、少なくともファイルをsongidx.lua作業ディレクトリにコピーすることです。
  • コマンドシェルを開き、ドキュメントディレクトリに設定する
  • 実行しpdflatextexluaソリューションに記載されているように数回

上記のファイルをコピーし、上記の解決策に従うことで、必要な 2 つのインデックスを含む歌集を生成できました。

ローカルインストールで例を試しています

準備:

  • 以前の分析から、インデックス作成の主要な問題に寄与しなかった、または問題に寄与した可能性のあるコードの多くの部分を無効にしました。
  • そこにコピーしましたsongidx.lua。私のディストリビューションでは、C:\...\MiKTeX2\scripts\songs(リンクまたはPATH変数の設定でも同様です)

次に実行します:

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

そうです: 結果ローカル

ソングブックインデックス.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に記事があるほど重要なようですOverleaf で latexmkrc を使用する方法

質問はここでも見つかりますテックスセ...

さて、より経験豊富なユーザーが参加する時が来ました :)

関連情報