如何将文本放在一行的圆括号内,并使用预定义的索引搜索键将其添加到第二个索引中?

如何将文本放在一行的圆括号内,并使用预定义的索引搜索键将其添加到第二个索引中?

我写了一篇包含 200 条引言的文章。以下是引言示例:

"Und wir haben die Liebe erkannt und geglaubt, die Gott zu uns hat. Gott ist Liebe, und wer in der Liebe bleibt, der bleibt in Gott und Gott in ihm" (1. Johannes 4,16)

引用本身由 blockquotes "" 表示,并且可以在不同的行上运行。引用引用在圆括号 () 中给出。我喜欢将引用引用放在一行中,因为这样看起来很难看:(1. Johannes在一行的末尾和4,16)下一行。所以我必须替换所有始终由所谓的 blockquotes 引入的引用" (

通过序言中的定义,\newcommand{\nobreakword}[1]{\mbox{(#1)}}我可以定义每个 () 表达式都没有被破坏。我可以搜索所有表达式" (并将该表达式替换为\nobreakword{(。因此,为了完成圆括号的使用代码,我还必须将所有表达式替换))}

为了快速重复替换文本,我们可以使用几乎每个具有“查找+替换”实用程序的文本编辑器。我使用 TeXstudio (v.2.8.4) 并按 Ctrl+R 来查找和替换文本。我确信这不是编辑器问题,并且在每个编辑器中都有效。我可以灵活地使用任何其他文本编辑器(适用于 Windows 8)。

我不能仅仅使用,而是\nobreakword{(要搜索" (1. Johannes并用这样的代码替换它," \addtheentryinsidebracketstothefirstindex{1. Johannes}\nobreakword{(1. Johannes以便引用不仅可以在换行符之前保存,而且还包含在特定的索引条目中。

现在使用的索引是用和制作的makeidx\index{Begriff!Subbegriff} 因为我已经使用了这个普通索引,但有一些限制(与我的 MWE 中看到的相同字母之间的垂直间距)和常规索引开始前的页面上的介绍性文字,所以我需要第二个索引以特定方式列出引文:1. Korinther ..,.., Galater ..,.., 1. Johannes ..,.., 2. Johannes ..,.. 所以我需要定义索引条目。所以我必须在序言中以某种方式定义第二个索引的顺序,因为它是任意的,它不是按字母顺序排列的(Hoheslied、Jeremia、Markus、Johannes、Römer、1. Korinther、Galater、1. Johannes、2. Johannes)

第一个索引看起来应该是这样的:

Hoheslied
Hoheslied 8,4        1,3

Jeremia 
Jeremia 31,3         1

Markus
Markus 10,19-21      1

Johannes
Johannes 3,16        1
Johannes 13,35       1,2
Johannes 15,9        1

Römer
Römer 5,8            1

1. Korinther
1. Korinther 16,14   2

Galater
Galater 5,22         3

1. Johannes
1. Johannes 4,16     4
1. Johannes 4,18-21  4,5

2. Johannes
2. Johannes 1,3     2

如果我可以搜索 " (1. Johannes并用 或 替换所有结果\addtonewindex{1. Johannes}\nobreakword{(例如" (1. Johannes 4,16)和),那就太酷了" (1. Johannes 4,18-21)。是否可以使用特定的替换文本模式来执行此操作?

在使用以下代码生成的 PDF 的最后一页中,我写下了我希望如何拥有此索引条目(从新页面开始)。

\documentclass[a4paper,latin,fontsize=10pt,headsepline,parskip=half-,index=totoc]{scrreprt}
\areaset[0pt]{160mm}{247mm}% no binding correction, text width is 160mm, text height is 247mm; with twoside=semi, the margins will be
\usepackage[a4paper,margin=2.5cm]{geometry} %needed for multicol package
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\usepackage[normalem]{ulem}
\usepackage{fancybox,calc,etoolbox,lipsum,multicol}
\usepackage[osf,sc]{mathpazo}
\usepackage[intoc]{nomencl}
\renewcommand{\nomname}{Glossar}
\makenomenclature
\usepackage{scrlayer-scrpage}% scrpage2 is obsolete
  \pagestyle{scrheadings}
  \clearpairofpagestyles% \clearscrheadings, \clearscrplain are deprecated
  \automark[chapter]{chapter}
  \ihead[]{\headmark}
  \ohead[\pagemark]{\pagemark}
  \renewcommand*\partpagestyle{empty} % removes the pagenumbers of all part pages
\usepackage{imakeidx} % must always be loaded before the hyperref package, otherwise it can cause problems!
\usepackage[colorlinks,pdfpagelabels,pdfstartview = FitH,bookmarksopen = true,bookmarksnumbered = true,linkcolor = black,plainpages = false,hypertexnames = false,citecolor = black] {hyperref}

\title{Einführung}
\author{Autor}
\date{1.Oktober 2014}

\newcommand{\nobreakword}[1]{\mbox{#1}}

% index
\usepackage{makeidx}
\makeindex[intoc,title=Stichwortverzeichnis] % no redefining is needed with \renewcommand{\indexname}{Stichwortverzeichnis} before \printindex
\makeatletter
  \def\@idxitem{\par\addvspace{10\p@ \@plus 5\p@ \@minus 3\p@}\hangindent 40\p@}
  \def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
  \def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
  \def\indexspace{}
  \patchcmd\theindex{\indexname}{\indexname\vspace{12pt}}{}{}
\makeatother

% glossar
\renewcommand{\nompreamble}{\vspace*{-3mm}...Introducing Thoughts...\vspace*{4mm}} %text before glossar!
\makenomenclature % is obligatory to create the glossar!
\newcommand{\auferstehungtext}{Auferstehungstext} % is used for long glossar entries!

\begin{document}

\begin{titlepage}% if you need a custom layout - otherwise, use \maketitle
  \centering
  Titelseite
\end{titlepage}

\renewcommand{\contentsname}{Inhaltsverzeichnis}
\clearpage\pdfbookmark{\contentsname}{toc}
\tableofcontents\thispagestyle{empty}

\chapter{Gottes Liebe zu den Menschen(Seine Geschöpfe)}

\begin{flushright}\footnotesize\textit{ursprünglicher Beitrag vom 6. April 2014 überarbeitet}\end{flushright}

The text in the index

\doublebox{\begin{minipage}[t]{1\columnwidth}%
    "Denn so hat Gott die Welt geliebt, dass er seinen eingeborenen Sohn gab, damit jeder, der an ihn glaubt, nicht verloren geht, sondern ewiges Leben hat." (Johannes 3,16)%
    \end{minipage}}

    \section*{Gottes Liebe zu den Menschen}

    "Und wir haben die Liebe erkannt und geglaubt, die Gott zu uns hat. Gott ist Liebe, und wer in der Liebe bleibt, der bleibt in Gott und Gott in ihm" (1. Johannes 4,16)
    \index{Wachstum im Glauben!Glaube}

    "Der HERR ist mir erschienen von ferne: Ich habe dich je und je geliebt, darum habe ich dich zu mir gezogen aus lauter Güte."
    (Jeremia 31,3)

    "Denn so hat Gott die Welt geliebt, dass er seinen eingeborenen Sohn gab, damit jeder, der an ihn glaubt, nicht verloren geht, sondern ewiges Leben hat." (Johannes 3,16)

    "Gott aber erweist seine Liebe zu uns darin, dass Christus, als wir noch Sünder waren, für uns gestorben ist." (Römer 5,8)

    "Du kennst die Gebote: »Du sollst nicht töten; du sollst nicht ehebrechen; du sollst nicht stehlen; du sollst nicht falsch
    Zeugnis reden; du sollst niemanden berauben; ehre Vater und Mutter.« Er aber sprach zu ihm: Meister, das habe ich alles gehalten von meiner Jugend auf. Und Jesus sah ihn an und gewann ihn lieb und sprach zu ihm: Eines fehlt dir. Geh hin, verkaufe alles, was du hast, und gib's den Armen, so wirst du einen Schatz im Himmel haben, und komm und folge mir nach!" (Markus 10,19-21)
    \index{Lebensveränderung!Reden/Schweigen}

    "Gnade, Barmherzigkeit, Friede von Gott, dem Vater, und von Jesus Christus, dem Sohn des Vaters, sei mit uns in Wahrheit und in Liebe!" (2. Johannes 1,3)


    \section*{Liebe unter den Menschen}

    "Furcht ist nicht in der Liebe, sondern die vollkommene Liebe treibt die Furcht aus; denn die Furcht rechnet mit Strafe. Wer
    sich aber fürchtet, der ist nicht vollkommen in der Liebe. Lasst uns lieben, denn er hat uns zuerst geliebt. Wenn jemand spricht: Ich liebe Gott, und hasst seinen Bruder, der ist ein Lügner. Denn wer seinen Bruder nicht liebt, den er sieht, der kann nicht Gott lieben, den er nicht sieht. Und dies Gebot haben wir von ihm, dass, wer Gott liebt, dass der auch seinen Bruder liebe." (1. Johannes 4,18-21)
    \index{Lebensveränderung!Nächstenliebe}

    "Daran wird jedermann erkennen, dass ihr meine Jünger seid, wenn ihr Liebe untereinander habt." (Johannes 13,35)

    "Wie mich mein Vater liebt, so liebe ich euch auch. Bleibt in meiner Liebe!" (Johannes 15,9)

    "Ich beschwöre euch, ihr Töchter Jerusalems: Erregt und erweckt nicht die Liebe, Bis es ihr gefällt!" (Hoheslied 8,4)

    "Alle eure Dinge lasst in der Liebe geschehen!"
    (1. Korinther 16,14)

    "Die Frucht des Geistes aber ist Liebe, Freude, Friede,Langmut, Freundlichkeit, Güte, Treue, Sanftmut, Selbstbeherrschung."
    (Galater 5,22)

    \index{Bleibendes!Liebe}
    \index{Lebensveränderung!Freude}\index{Lebensveränderung!Friede}
    \index{Lebensveränderung!Freundlichkeit}
    \index{Begriffe!Treue}


\addtocontents{toc}{\textbf{\sffamily \textcolor{white}{.}}\protect\par} %gives an empty line between Appendy and last chapter
\shorthandon{"}

\cleardoublepage
\thispagestyle{empty}
\vspace*{\fill}
\begin{center}
    \Huge Anhang
    \addtocontents{toc}{%
        \protect\addvspace{0.5pc}% <------------- adjust to suit
        \textbf{\sffamily Anhang}\protect\par
    }
\end{center}
\vspace*{\fill}
\clearpage


\nomenclature{Begriff2}{Begriffserklärung2}
\nomenclature{Begriff3}{Begriffserklärung3}
% Glossar (define specifications and introducing text in preamble)
\printnomenclature[2.5 cm] % width of first column

% Index (define specifications and introducing text here)
\indexprologue{\vspace*{-7mm} 
    Different words in different columns
\begin{multicols}{3}
    \begin{small}
    first entry\\
    second entry\\
    third entry\\
    fourth entry
    \end{small}
\end{multicols}
\newpage
Bibelstellen-Index\\\\
\textbf{It should look like this:}\\
\\    
Hoheslied\\
Hoheslied 8,4\hspace*{1cm}x\\
\\  
Jeremia\\  
Jeremia 31,3\hspace*{1cm}x,y\\
\\  
Markus\\
Markus 10,19-21\hspace*{1cm}k\\
\\  
Johannes\\
Johannes 3,16\hspace*{1cm}k,y\\
Johannes 13,35\hspace*{1cm}k\\
Johannes 15,9\hspace*{1cm}k\\
\\ 
Römer\\
Römer 5,8\hspace*{1cm}k\\
\\ 
1. Korinther\\ 
1. Korinther 16,14\hspace*{1cm}k\\
\\  
Galater\\
Galater 5,22\hspace*{1cm}pg.k\\
\\  
1. Johannes
1. Johannes 4,16\hspace*{1cm}k\\
1. Johannes 4,18-21\hspace*{1cm}k\\
\\  
2. Johannes\\
2. Johannes 1,3\hspace*{1cm}\\
...\\
...\\
\vspace*{40mm}
\textbf{newpage}
\vspace*{10mm}
}
\printindex

\end{document}

如何通过使用命令的查找+替换将模式识别为非行制动引用,并将该引用自动包含在第二个索引中?

一个可能的解决方案可能是以某种方式实现这个代码建议:

\documentclass{article}
\usepackage{lipsum}
\makeatletter
\newcommand\myquote{\my@quote}
\def\my@quote#1(#2){``#1''~\mbox{(#2)}}
\makeatother
\begin{document}

{Und wir haben die Liebe erkannt und geglaubt, die Gott zu uns hat. Gott ist Liebe, und wer in der Liebe bleibt, der bleibt in Gott und Gott in ihm}\myquote(1. Johannes 4,16)

\end{document}

你知道怎么做吗?

答案1

所以你的问题有两个部分:

  1. 我如何" (Johannes 3,16)" \addtonewindex(Johannes)\nobreakword{(Johannes 3,16)}

  2. 使用这个新的索引字段生成一个好的索引。

第一部分可以在支持正则表达式的文本编辑器中轻松完成,例如记事本++。在替换函数中搜索" \((....\w+)([^\)]*\)),并将其替换为" \\addtonewindex\(\1\)\\nobreakword{\(\1\2}。此正则表达式适用于示例中的所有实例。

编辑只需添加一些有关正则表达式的快速信息:正则表达式匹配以 开头的所有内容" (,后跟第一个以任意四个字符(....)开头并后跟 1 个或多个字母数字字符(\w+)的匹配组。此组合对于匹配Johannes和都是必要的1. Johannes,因为第二个在位置 3 包含一个空格。然后将此匹配组存储在 中\1。第一个匹配组后紧接着是第二个匹配组([^\)]*\)),它匹配任意数量的非 字符),后跟一个)。这存储在 中\2

\1和都\2用于替换部分来构建新的输出。

为了支持您的报价自动索引,您需要切换到imakeidx,因为基本版makeidx不支持多个索引。这会向\index命令添加第二个参数,指定要添加到的索引。

因此,如果我们将正则表达式的输出更改为:" \\index[bibel]{\1!\1\2}\\nobreakword{\(\1\2\)},并将所有其他\index调用更改为\index[stichwort](例如,将所有出现的替换为\index{\index[stichwort]{,并修改标题以使用 imakeidx:

\usepackage{imakeidx}
\makeindex[name=stichwort,title=Stichwortverzeichniss,options=-s ./index]
\makeindex[name=bibel,title=Bibelstellen,options=-s ./index]

options需要.ist根据以下键来指定文件使用 imakeindex 将索引中的页码右对齐。这将确保页码右对齐。文件内容main.ist为:

delim_0 "\\hfill"
delim_1 "\\hfill"
delim_2 "\\hfill" 

然后你的输出将如下所示:

输出

源代码如下:

\documentclass[a4paper,latin,fontsize=10pt,headsepline,parskip=half-,index=totoc]{scrreprt}
\areaset[0pt]{160mm}{247mm}% no binding correction, text width is 160mm, text height is 247mm; with twoside=semi, the margins will be
\usepackage[a4paper,margin=2.5cm]{geometry} %needed for multicol package
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\usepackage[normalem]{ulem}
\usepackage{fancybox,calc,etoolbox,lipsum,multicol}
\usepackage[osf,sc]{mathpazo}
\usepackage[intoc]{nomencl}
\renewcommand{\nomname}{Glossar}
\makenomenclature
\usepackage{scrlayer-scrpage}% scrpage2 is obsolete
  \pagestyle{scrheadings}
  \clearpairofpagestyles% \clearscrheadings, \clearscrplain are deprecated
  \automark[chapter]{chapter}
  \ihead[]{\headmark}
  \ohead[\pagemark]{\pagemark}
  \renewcommand*\partpagestyle{empty} % removes the pagenumbers of all part pages
\usepackage{imakeidx} % must always be loaded before the hyperref package, otherwise it can cause problems!
\makeindex[name=stichwort,title=Stichwortverzeichniss,options=-s ./main]
\makeindex[name=bibel,title=Bibelstellen,options=-s ./main]

\usepackage[colorlinks,pdfpagelabels,pdfstartview = FitH,bookmarksopen = true,bookmarksnumbered = true,linkcolor = black,plainpages = false,hypertexnames = false,citecolor = black] {hyperref}

\title{Einführung}
\author{Autor}
\date{1.Oktober 2014}

\newcommand{\nobreakword}[1]{\mbox{#1}}

\makeatletter
  \def\@idxitem{\par\addvspace{10\p@ \@plus 5\p@ \@minus 3\p@}\hangindent 40\p@}
  \def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
  \def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
  \def\indexspace{}
  \patchcmd\theindex{\indexname}{\indexname\vspace{12pt}}{}{}
\makeatother

% glossar
\renewcommand{\nompreamble}{\vspace*{-3mm}...Introducing Thoughts...\vspace*{4mm}} %text before glossar!
\makenomenclature % is obligatory to create the glossar!
\newcommand{\auferstehungtext}{Auferstehungstext} % is used for long glossar entries!

\begin{document}

\begin{titlepage}% if you need a custom layout - otherwise, use \maketitle
  \centering
  Titelseite
\end{titlepage}

\renewcommand{\contentsname}{Inhaltsverzeichnis}
\clearpage\pdfbookmark{\contentsname}{toc}
\tableofcontents\thispagestyle{empty}

\chapter{Gottes Liebe zu den Menschen(Seine Geschöpfe)}

\begin{flushright}\footnotesize\textit{ursprünglicher Beitrag vom 6. April 2014 überarbeitet}\end{flushright}

The text in the index

\doublebox{\begin{minipage}[t]{1\columnwidth}%
    "Denn so hat Gott die Welt geliebt, dass er seinen eingeborenen Sohn gab, damit jeder, der an ihn glaubt, nicht verloren geht, sondern ewiges Leben hat." \index[bibel]{Johannes!Johannes 3,16}\nobreakword{(Johannes 3,16)}%
    \end{minipage}}

    \section*{Gottes Liebe zu den Menschen}

    "Und wir haben die Liebe erkannt und geglaubt, die Gott zu uns hat. Gott ist Liebe, und wer in der Liebe bleibt, der bleibt in Gott und Gott in ihm" \index[bibel]{1. Johannes!1. Johannes 4,16}\nobreakword{(1. Johannes 4,16)}
    \index[stichwort]{Wachstum im Glauben!Glaube}

    "Der HERR ist mir erschienen von ferne: Ich habe dich je und je geliebt, darum habe ich dich zu mir gezogen aus lauter Güte."
    (Jeremia 31,3)

    "Denn so hat Gott die Welt geliebt, dass er seinen eingeborenen Sohn gab, damit jeder, der an ihn glaubt, nicht verloren geht, sondern ewiges Leben hat." \index[bibel]{Johannes!Johannes 3,16}\nobreakword{(Johannes 3,16)}

    "Gott aber erweist seine Liebe zu uns darin, dass Christus, als wir noch Sünder waren, für uns gestorben ist." \index[bibel]{Römer!Römer 5,8}\nobreakword{(Römer 5,8)}

    "Du kennst die Gebote: »Du sollst nicht töten; du sollst nicht ehebrechen; du sollst nicht stehlen; du sollst nicht falsch
    Zeugnis reden; du sollst niemanden berauben; ehre Vater und Mutter.« Er aber sprach zu ihm: Meister, das habe ich alles gehalten von meiner Jugend auf. Und Jesus sah ihn an und gewann ihn lieb und sprach zu ihm: Eines fehlt dir. Geh hin, verkaufe alles, was du hast, und gib's den Armen, so wirst du einen Schatz im Himmel haben, und komm und folge mir nach!" \index[bibel]{Markus!Markus 10,19-21}\nobreakword{(Markus 10,19-21)}
    \index[stichwort]{Lebensveränderung!Reden/Schweigen}

    "Gnade, Barmherzigkeit, Friede von Gott, dem Vater, und von Jesus Christus, dem Sohn des Vaters, sei mit uns in Wahrheit und in Liebe!" \index[bibel]{2. Johannes!2. Johannes 1,3}\nobreakword{(2. Johannes 1,3)}


    \section*{Liebe unter den Menschen}

    "Furcht ist nicht in der Liebe, sondern die vollkommene Liebe treibt die Furcht aus; denn die Furcht rechnet mit Strafe. Wer
    sich aber fürchtet, der ist nicht vollkommen in der Liebe. Lasst uns lieben, denn er hat uns zuerst geliebt. Wenn jemand spricht: Ich liebe Gott, und hasst seinen Bruder, der ist ein Lügner. Denn wer seinen Bruder nicht liebt, den er sieht, der kann nicht Gott lieben, den er nicht sieht. Und dies Gebot haben wir von ihm, dass, wer Gott liebt, dass der auch seinen Bruder liebe." \index[bibel]{1. Johannes!1. Johannes 4,18-21}\nobreakword{(1. Johannes 4,18-21)}
    \index[stichwort]{Lebensveränderung!Nächstenliebe}

    "Daran wird jedermann erkennen, dass ihr meine Jünger seid, wenn ihr Liebe untereinander habt." \index[bibel]{Johannes!Johannes 13,35}\nobreakword{(Johannes 13,35)}

    "Wie mich mein Vater liebt, so liebe ich euch auch. Bleibt in meiner Liebe!" \index[bibel]{Johannes!Johannes 15,9}\nobreakword{(Johannes 15,9)}

    "Ich beschwöre euch, ihr Töchter Jerusalems: Erregt und erweckt nicht die Liebe, Bis es ihr gefällt!" \index[bibel]{Hoheslied!Hoheslied 8,4}\nobreakword{(Hoheslied 8,4)}

    "Alle eure Dinge lasst in der Liebe geschehen!"
    (1. Korinther 16,14)

    "Die Frucht des Geistes aber ist Liebe, Freude, Friede,Langmut, Freundlichkeit, Güte, Treue, Sanftmut, Selbstbeherrschung."
    (Galater 5,22)

    \index[stichwort]{Bleibendes!Liebe}
    \index[stichwort]{Lebensveränderung!Freude}\index[stichwort]{Lebensveränderung!Friede}
    \index[stichwort]{Lebensveränderung!Freundlichkeit}
    \index[stichwort]{Begriffe!Treue}


\addtocontents{toc}{\textbf{\sffamily \textcolor{white}{.}}\protect\par} %gives an empty line between Appendy and last chapter
\shorthandon{"}

\cleardoublepage
\thispagestyle{empty}
\vspace*{\fill}
\begin{center}
    \Huge Anhang
    \addtocontents{toc}{%
        \protect\addvspace{0.5pc}% <------------- adjust to suit
        \textbf{\sffamily Anhang}\protect\par
    }
\end{center}
\vspace*{\fill}
\clearpage


\nomenclature{Begriff2}{Begriffserklärung2}
\nomenclature{Begriff3}{Begriffserklärung3}
% Glossar (define specifications and introducing text in preamble)
\printnomenclature[2.5 cm] % width of first column

% Index (define specifications and introducing text here)


\printindex[bibel]

\clearpage
\printindex[stichwort]

\end{document}

相关内容