私は本を書いていますが、出版社は「」引用符の代わりにギュイメット引用符を使用するように求めています。この Stack Exchange で、適切な回答のある質問をいくつか読みましたが、私の質問に対する正確な回答は見つかりませんでした。
LaTeX で、`` と書いたときに自動的に « を作成し、'' と書いたときに自動的に » を作成する方法があるかどうか疑問に思っています。あまり乗り気ではない代替案は、15 を超える異なる .tex ドキュメントで構成される本全体を調べて手動で行うことです。
どのような助けでも大歓迎です。
答え1
Overleaf プラットフォームをご利用いただいているのは朗報です。Lua(La)TeX を使用してドキュメントをコンパイルできるからです。:-)
LuaLaTeX をまだよく知らない方のために説明します。現在、LuaLaTeX は主に pdfLaTeX のスーパーセットになっています。つまり、特に、ドキュメントが pdfLaTeX で正しくコンパイルされる場合は、LuaLaTeX でも正しくコンパイルできるようにするために、それほど多くの変更を加える必要はありません。行う必要がある主な変更は、パッケージinputenc
とfontenc
パッケージの読み込みを停止することです。ドキュメントで特殊なテキストフォントや数式フォントを使用している場合は、パッケージを読み込む必要がある場合もあります。フォントスペックパッケージと適切な発行\setmainfont
など\setsansfont
の指示に従ってください。デフォルト以外のフォントを使用する場合は、その旨を明記してください。
私は次の2つのステップで進む解決策を提案します。まず、csquotesパッケージにオプション を付けますnorwegian=guillemets
。このパッケージは というマクロを提供します。このマクロ\enquote
は引数を 2 つのギユメットで囲みます。次に、入力ストリームのプリプロセッサとして動作し、 のすべてのインスタンスを に、 のすべてのインスタンスを に「オンザフライ」で変換する Lua 関数を定義してアクティブ化する必要があります``
。Lua関数\enquote{
がプリプロセッサとして動作することで、''
}
前にLaTeX が通常の作業を開始すると、LaTeX は実際には および のインスタンスを「認識」しません``
。代わりに、LaTeX はディレクティブ''
のインスタンスのみを認識して操作します。\enquote
次のテスト ファイルは、 と呼ばれるこのような Lua 関数use_enquote
と、必要に応じて Lua 関数をアクティブ化および非アクティブ化する 2 つのユーティリティ マクロを提供します。
%% 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}