![使用 paracol 时,如何禁用特定列的连字?](https://linux22.com/image/353987/%E4%BD%BF%E7%94%A8%20paracol%20%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E7%A6%81%E7%94%A8%E7%89%B9%E5%AE%9A%E5%88%97%E7%9A%84%E8%BF%9E%E5%AD%97%EF%BC%9F.png)
根据 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 连字符的方法,例如aa
、al
、an
和。(全面披露:我是这个包的主要作者。)ar
av
我相信从 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}