Ersetzen von `` und '' durch Guillemets, ohne den Quellcode zu berühren

Ersetzen von `` und '' durch Guillemets, ohne den Quellcode zu berühren

Ich schreibe ein Buch und der Verlag möchte, dass ich Guillemets anstelle von ``''-Anführungszeichen verwende. Ich habe in diesem Stack Exchange einige Fragen mit guten Antworten gelesen, aber keine genaue Antwort auf meine Frage gefunden.

Ich frage mich, ob es eine Möglichkeit gibt, LaTeX automatisch dazu zu bringen, « wenn ich schreibe `` und » wenn ich schreibe '' zu erstellen. Die Alternative, die mir nicht so gefällt, besteht darin, ein ganzes Buch mit mehr als 15 verschiedenen .tex-Dokumenten durchzugehen und dies manuell zu tun.

Jede Hilfe wird sehr geschätzt.

Antwort1

Es ist eine gute Nachricht, dass Sie die Overleaf-Plattform nutzen, da Sie dort Lua(La)TeX zum Kompilieren Ihres Dokuments verwenden können. :-)

Falls Sie (noch) nicht mit LuaLaTeX vertraut sind: Heutzutage ist es größtenteils eine Obermenge von pdfLaTeX. Das bedeutet insbesondere, dass Sie, wenn Ihr Dokument unter pdfLaTeX korrekt kompiliert wird, nicht allzu viele Änderungen vornehmen müssen, damit es auch unter LuaLaTeX korrekt kompiliert wird. Die wichtigste Änderung, die Sie vornehmen müssen, besteht darin, das Laden der Pakete inputencund zu stoppen fontenc. Wenn Ihr Dokument spezielle Text- oder Mathematikschriften verwendet, kann es auch notwendig sein, die PaketeSchriftspezifikationPaket und Ausgabe geeigneter \setmainfontAnweisungen \setsansfontusw. Bitte geben Sie an, wenn Sie keine standardmäßigen Schriftarten verwenden.

Ich schlage folgende Lösung vor, die in zwei Schritten abläuft. Stellen Sie zunächst sicher, dass Sie dieAbonnierenPaket mit der Option norwegian=guillemets; dieses Paket bietet ein Makro namens \enquote, das sein Argument mit einem passenden Paar Guillemets umgibt. Zweitens müssen Sie eine Lua-Funktion definieren und aktivieren, die als Vorprozessor für den Eingabestrom fungiert und alle Instanzen von in ``und \enquote{alle Instanzen von ''in }„on the fly“ konvertiert. Mit der Lua-Funktion als VorprozessorVorLaTeX beginnt mit seiner üblichen Arbeit. Tatsächlich „sieht“ LaTeX niemals Instanzen von ``und ''; stattdessen kann LaTeX nur Instanzen von \enquoteDirektiven sehen und darauf zugreifen.

Die folgende Testdatei stellt eine solche Lua-Funktion namens bereit use_enquote, zusammen mit zwei Utility-Makros, die die Lua-Funktion aktivieren und bei Bedarf deaktivieren.

Bildbeschreibung hier eingeben

%% this document must be compiled with LuaLaTeX.
\documentclass{book} % or some other suitable document class
\usepackage{fontspec} % don't load the 'inputenc' and 'fontenc' packages

\usepackage[norsk]{babel} % or '\usepackage[norwegian]{babel}'
\usepackage[norwegian=guillemets]{csquotes} % customize appearance of quoted material

%% A Lua function that performs all of the work:
\directlua{
  function use_enquote ( s )
    s = s:gsub ( "``" , "\\enquote{" )
    return ( s:gsub ( "''" , "}" ) )
  end
}

% Two LaTeX utility macros:
\newcommand\EnquoteOn{\directlua{luatexbase.add_to_callback(
   "process_input_buffer", use_enquote, "use_enquote" )}}
\newcommand\EnquoteOff{\directlua{luatexbase.remove_from_callback(
   "process_input_buffer", "use_enquote" )}}
  
\begin{document}

\EnquoteOn % activate the Lua function 
``Hei Verden''

\EnquoteOff % deactivate the Lua function
``Hei Verden''

\end{document}

verwandte Informationen