해결해야 할 남은 문제

해결해야 할 남은 문제

songspackage를 사용하여 노래책을 만들고 있습니다. 저는 LaTex를 처음 접했고 잘 작동하는 overleaf를 사용하기로 결정했습니다. 제가 실제로 가지고 있는 유일한 문제는 색인에 관한 것입니다. 표시할 수 있는 작업 색인 파일이 이미 있는 프로젝트에 대해 이전 기본 템플릿을 사용하고 있지만 색인이 업데이트되지 않습니다.

문서를 검색하는 동안 솔루션이 다음 라인에 연결되어 있다고 생각합니다.

texlua songidx.lua titlfile.sxd titlfile.sbx

하지만 그 줄을 뒷면에 넣을 곳을 찾을 수 없는 것 같습니다. 어쨌든 이 문제를 해결할 수 있습니까? 아니면 내 컴퓨터에서 로컬로 구문 분석하는 방법을 배워야 합니까?

업데이트: 아래에 MWE를 추가했습니다. 이 예에서는 "[인덱스가 아직 생성되지 않았습니다.]"라는 텍스트가 포함된 빈 인덱스를 생성하거나 이전 버전의 책에서 idxfile.sbx를 추가하면 전체 레지스터가 몇 년 전과 마찬가지로 나타납니다. 이 예에서는 노래를 부릅니다. 따라서 idxfile.sbx는 어떻게든 다시 작성되어야 합니다. 이제 두 개의 최소 파일(첫 번째 블록)과 노래 자체가 포함된 파일로 분할된 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

songidx.lua파일을 다운로드하여 뒷면 작업 디렉터리에 복사할 수 있습니다 (ctan 또는 기타 리소스에서). 그런 다음 올바른 인덱스 파일(idxfile.sbx)을 업데이트하고 작성하는 \write18명령을 실행하는 데 사용됩니다. 불행히도 파일을 올바르게 업데이트하려면 매번 이 texlua songidx.lua idxfile.sxd idxfile.sbx작업이 필요합니다 . 누군가 더 나은 해결책을 가지고 있을 수도 있습니다.clear cached filesRecompile 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에 이에 대한 기사가 있다는 것은 충분히 중요한 것 같습니다.Overleaf와 함께 latexmkrc를 사용하는 방법.

여기에서 질문을 찾을 수도 있습니다.테엑스 ...

이제 좀 더 숙련된 사용자가 참여할 시간입니다. :)

관련 정보