Замена `` и '' на каймы без изменения исходного кода

Замена `` и '' на каймы без изменения исходного кода

Я пишу книгу, и издатель хочет, чтобы я использовал каймы вместо кавычек ``''. Я прочитал довольно много вопросов с хорошими ответами на этом обмене стеками, но я не нашел точного ответа на свой вопрос.

Мне интересно, есть ли способ заставить 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}

Связанный контент