使用 paracol 时,如何禁用特定列的连字?

使用 paracol 时,如何禁用特定列的连字?

根据 Mico 的评论(关于全部或部分连字符),对文本进行了一些更新

我正在使用这个包帕拉科尔使用 XeLaTeX,创建了两列,并且我正在使用连字。我希望禁用第二列的罕见和历史连字,并保留第一列的连字(至少目前如此)。常见的连字,例如ff等等,必须保留。

问题:实现这一目标最快捷、最简单的方法是什么?

额外更新:添加了另一个属于主要问题的具体内容:解决第一个问题后(即第二列只允许使用常见的连字符),那么如何才能禁用第一列中的某些特定连字符?我的意思是:是的,我希望第一列有历史和罕见的连字符,除了一些特定的连字符,比如双氨基酸但特别是两个辅音相连的单词(例如格鲁韩国等等)。

代码更新(29-4-17):

\documentclass[12pt, a4paper, titlepage]{book}
\usepackage{paracol}
\usepackage{lipsum}
\usepackage{polyglossia}
\setmainlanguage{english}
\setmainfont[Ligature=Historic,Ligature=Rare]{Junicode}

\title{Title}
\author{Author}

\begin{document}
\frontmatter
   \begin{titlepage}
   \maketitle
   \thispagestyle{empty}
   \end{titlepage}


\chapter{Foreword}
\begin{paracol}{2}
   %% here starts the first column; while I wish to use the rare and 
    % historic ligatures in this first column, here I wish to disable e.g. 
   %  „gr” and „kr”
   \lipsum
   \switchcolumn
   %% having switched, here, for the second column, I want to disable the 
   % rare and historic ligatures, keep the common ones (ff, fi, etc.), and still use the 
   % same font as in the first, while the first column keeps all ligatures 
   % as it is
   \lipsum
\end{paracol}

\end{document}

答案1

这是半自动的方法。之所以是半自动的,是因为在某些环境中,您需要手动更改字体。该paracol包非常复杂,并且没有提供挂钩来按列设置字体。

此代码可在以下环境中自动运行:

  • 简单环境使用\switchcolumn
  • {leftcolumm}{rightcolumn}环境
  • 这些命令/环境的星号版本

对于其他环境(如脚注、表格和图形),我提供了一个自动设置当前列号字体的命令:

\setcolfont

例如:

\footnote{\setcolfont Footnote text}

如果我找到一种更自动化的方法,我会更新答案。

\documentclass{article}
\usepackage{paracol}
\usepackage{fontspec}
\usepackage{etoolbox}

% Define font families for Col 0 and Col 1
% Add more for more column documents if needed
\expandafter\newfontfamily\csname juni0\endcsname[Ligatures={Historic,Rare}]{Junicode}
\expandafter\newfontfamily\csname juni1\endcsname[]{Junicode}
% The following commands are added for convenience in case each font is needed elsewhere
% They also make the environment patching code more readable
\newfontfamily\junicodeHistoric[Ligatures={Historic,Rare}]{Junicode}
\newfontfamily\junicodeNoLig[]{Junicode}

% Patch the right and left column environments
\AtBeginEnvironment{leftcolumn}{\junicodeHistoric}
\AtBeginEnvironment{leftcolumn*}{\junicodeHistoric}
\AtBeginEnvironment{rightcolumn}{\junicodeNoLig}
\AtBeginEnvironment{rightcolumn*}{\junicodeNoLig}

\makeatletter
% Define a command to set the font to the current column number
\newcommand{\setcolfont}{%
\csname juni\number\pcol@currcol\endcsname%
}

%% Optional code for use with selnolig
%\usepackage{selnolig}
%% Define global noligs 
%\nolig{aa}{a|a} % Examples change as needed
%\nolig{al}{a|l}
%\nolig{an}{a|n}
%\nolig{ar}{a|r}
%\nolig{av}{a|v}
%% End optional code for selnolig


% Patch the \switchcolumn command and paracol environments to set the column font
\appto{\pcol@switchcol}{\setcolfont}{}{}
\preto{\paracol}{\setcolfont}{}{}
\makeatother

\usepackage[]{kantlipsum}
\begin{document}
\begin{paracol}{2}
% Test with switchcolumn
Ideal\kant[1]
\switchcolumn
After\kant[1]
% Test with leftcolumn/rightcolumn
\begin{leftcolumn}
\kant[2]%
% Footnotes need to have explicit \setcolfont commands
\footnote{\setcolfont 
This is a left column footnote.}
\end{leftcolumn}
\begin{rightcolumn}
\kant[2]%
\footnote{\setcolfont
This is a right column footnote.}
\end{rightcolumn}
\switchcolumn*
\kant[3]
% Tables/figures need to have explicit \setcolfont commands
\begin{table}[tbp]
\setcolfont
This is a left column table. Ideal It is set in the left font.
\end{table}
\switchcolumn
\kant[3]
\end{paracol}

\end{document}

代码输出

适应使用selnolig

如果您希望更好地控制文本中的连字,可以使用 Mico 的selnolig软件包选择性地关闭某些连字。这需要运行 LuaTeX。无法按列选择性地关闭连字,因为命令\nolig实际上是全局的。(请参阅下面的 Mico 的评论。)

答案2

以下答案基于 @AlanMunn 的早期版本(暂时删除,后来恢复)答案。即,我坚持使用etoolbox机器为左侧和右侧列使用单独的字体。此外,我从 XeLaTeX 切换到 LuaLaTeX,以便能够使用塞尔诺利格包,它提供了一种全局禁用某些 Junicode 连字符的方法,例如aaalan和。(全面披露:我是这个包的主要作者。)arav

我相信从 XeLaTeX 切换到 LuaLaTeX 对您来说不是一项艰巨的任务。

在此处输入图片描述

\documentclass{article}
\usepackage{polyglossia} 
\setmainlanguage{english}
\usepackage{paracol,fontspec}
\newfontfamily\junicodeHistoric[Ligatures={Historic,Rare}]{Junicode}
\newfontfamily\junicodeNoLig[]{Junicode}

\usepackage{etoolbox}
\AtBeginEnvironment{leftcolumn}{\junicodeHistoric}
\AtBeginEnvironment{rightcolumn}{\junicodeNoLig}
\usepackage{kantlipsum}

\usepackage{selnolig} % must be used with LuaLaTeX
\debugon % optional -- leave an activity trail in log file
% Globally suppress the following ligatures:
\nolig{aa}{a|a} 
\nolig{al}{a|l}
\nolig{an}{a|n}
\nolig{ar}{a|r}
\nolig{av}{a|v}
% feel free to provide further \nolig directives...

\begin{document}
\begin{paracol}{2}
\begin{leftcolumn}
\kant[1]
\end{leftcolumn}
\begin{rightcolumn}
\kant[1]
\end{rightcolumn}
\end{paracol}

\end{document}

相关内容