Я пишу книгу, и издатель хочет, чтобы я использовал каймы вместо кавычек ``''. Я прочитал довольно много вопросов с хорошими ответами на этом обмене стеками, но я не нашел точного ответа на свой вопрос.
Мне интересно, есть ли способ заставить LaTeX автоматически делать « когда я пишу ``, и » когда я пишу ''. Альтернатива, которая мне не очень нравится, — это пройтись по всей книге, состоящей из более чем 15 различных .tex-документов, и сделать это вручную.
Любая помощь будет очень ценна.
решение1
Хорошие новости, что вы используете платформу Overleaf, поскольку она позволяет вам использовать Lua(La)TeX для компиляции вашего документа. :-)
Если вы (еще) не знакомы с LuaLaTeX: в настоящее время это в значительной степени надмножество pdfLaTeX. Это означает, в частности, что если ваш документ правильно компилируется в pdfLaTeX, вам не придется вносить слишком много изменений, чтобы он также правильно компилировался в LuaLaTeX. Главное изменение, которое вам придется сделать, — это прекратить загрузку пакетов inputenc
и fontenc
. Если ваш документ использует какие-либо специальные текстовые или математические шрифты, может также потребоваться загрузитьспецификация шрифтаупакуйте и выпустите соответствующие инструкции \setmainfont
и \setsansfont
т. д. Пожалуйста, укажите, если вы используете какие-либо шрифты, отличные от шрифтов по умолчанию.
Я предлагаю следующее решение, которое выполняется в два этапа. Во-первых, обязательно загрузитеcsquotesпакет с опцией norwegian=guillemets
; этот пакет предоставляет макрос с именем \enquote
, который окружает свой аргумент соответствующей парой guillemets. Во-вторых, вам нужно определить и активировать функцию Lua, которая действует как препроцессор входного потока, преобразуя все экземпляры в ``
и \enquote{
все экземпляры в ''
" }
на лету". С функцией Lua, действующей как препроцессор,доLaTeX начинает свою обычную работу, LaTeX на самом деле никогда не «видит» никаких экземпляров ``
и ''
; вместо этого LaTeX видит и обрабатывает только экземпляры \enquote
директив.
Следующий тестовый файл предоставляет такую функцию Lua, называемую use_enquote
, а также два служебных макроса, которые активируют и, при необходимости, деактивируют функцию Lua.
%% 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}