最后更新(2018-05-18)
1.34 版
paracol
已修复此问题,现已发布加拿大运输安全局现在。
- 我将 KOMA 文档类与该
paracol
包结合使用。 - 该文件的最终目的是双语文件(两种语言,两个同步的专栏)。
- 在我的真实文档中,我为级别的标题涂上颜色
subparagraph
(这里我使用红色)。\addtokomafont{子段落}{\color{红色}} - 我的问题是,在某些分页符情况下产生的颜色
subparagraph
会导致正常文本也被着色。 - 我很难缩小问题范围并尽量减少代码:不同的分页符,问题/效果就消失了。
% Dokumentenklasse inkl. Optionen
\documentclass[
fontsize = 12pt
,headings = small
,parskip = true
,numbers = noendperiod
,chapterprefix = true
]{scrbook}
%% Seitenlayout
\usepackage[
%showframe = true,
showframe = false,
]{geometry}
% Seiten-Dimensionen
\geometry{paperwidth = 300mm} % Format 16:9
\geometry{paperheight = 168.75mm} % Format 16:9
\geometry{margin = 15mm}
\geometry{marginparsep = 2mm}
\geometry{marginparwidth = 8mm}
\geometry{footskip = 14mm}
% Color Support
\usepackage{xcolor}
% paracol
\usepackage{paracol}
\setlength{\columnseprule}{1pt}
\setlength{\columnsep}{2em}
\addtokomafont{subparagraph}{\color{red}}
% http://texwelt.de/wissen/fragen/10289/wie-andere-ich-die-abstande-uberunter-section-subsection-subsubsection
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 1\baselineskip,
innerskip = 0\baselineskip]{chapter}
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 0.25\baselineskip]{section}
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 1sp]{subparagraph}
%% Dummy-Texte
\usepackage{blindtext}
\begin{document}
\chapter{Chapter Heading}
% ### ### ###
\begin{paracol}{2}
% --- --- ---
\begin{leftcolumn*}
% --- ---
\section{Section Heading Left}
\subparagraph{Subparagraph Heading Left}
% ---
\blindtext
\vspace{10mm}
% ---
% --- ---
\end{leftcolumn*}
% --- --- ---
% --- --- ---
\begin{rightcolumn}
% --- ---
\section*{Section Heading Right}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{rightcolumn}
% --- --- ---
\begin{leftcolumn*}
% --- ---
\section{Section Heading Left}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{leftcolumn*}
% --- --- ---
% --- --- ---
\begin{rightcolumn}
% --- ---
\section*{Section Heading Right (Without Numbering)}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{rightcolumn}
% --- --- ---
\end{paracol}
% ### ### ###
\end{document}
现在我编辑一行代码,例如注释\geometry{margin = 15mm}
,并且没有红色的普通文本:
% Dokumentenklasse inkl. Optionen
\documentclass[
fontsize = 12pt
,headings = small
,parskip = true
,numbers = noendperiod
,chapterprefix = true
]{scrbook}
%% Seitenlayout
\usepackage[
%showframe = true,
showframe = false,
]{geometry}
% Seiten-Dimensionen
\geometry{paperwidth = 300mm} % Format 16:9
\geometry{paperheight = 168.75mm} % Format 16:9
%\geometry{margin = 15mm}
\geometry{marginparsep = 2mm}
\geometry{marginparwidth = 8mm}
\geometry{footskip = 14mm}
% Color Support
\usepackage{xcolor}
% paracol
\usepackage{paracol}
\setlength{\columnseprule}{1pt}
\setlength{\columnsep}{2em}
\addtokomafont{subparagraph}{\color{red}}
% http://texwelt.de/wissen/fragen/10289/wie-andere-ich-die-abstande-uberunter-section-subsection-subsubsection
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 1\baselineskip,
innerskip = 0\baselineskip]{chapter}
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 0.25\baselineskip]{section}
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 1sp]{subparagraph}
%% Dummy-Texte
\usepackage{blindtext}
\begin{document}
\chapter{Chapter Heading}
% ### ### ###
\begin{paracol}{2}
% --- --- ---
\begin{leftcolumn*}
% --- ---
\section{Section Heading Left}
\subparagraph{Subparagraph Heading Left}
% ---
\blindtext
\vspace{10mm}
% ---
% --- ---
\end{leftcolumn*}
% --- --- ---
% --- --- ---
\begin{rightcolumn}
% --- ---
\section*{Section Heading Right}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{rightcolumn}
% --- --- ---
\begin{leftcolumn*}
% --- ---
\section{Section Heading Left}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{leftcolumn*}
% --- --- ---
% --- --- ---
\begin{rightcolumn}
% --- ---
\section*{Section Heading Right (Without Numbering)}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{rightcolumn}
% --- --- ---
\end{paracol}
% ### ### ###
\end{document}
我知道代码不够精简,无法通过 MWE 测试。我很难提供它。
更新:编号子段落
我把“MWE”做得太小了:我忘了我已经编号了subparagraph
。当我将David的代码合并到最初提供的示例中时,我得到了所需的行为。
当我对小段进行编号时,数字就没有颜色。
% Dokumentenklasse inkl. Optionen
\documentclass[
fontsize = 12pt
,headings = small
,parskip = true
,numbers = noendperiod
,chapterprefix = true
]{scrbook}
%% Seitenlayout
\usepackage[
%showframe = true,
showframe = false,
]{geometry}
% Seiten-Dimensionen
\geometry{paperwidth = 300mm} % Format 16:9
\geometry{paperheight = 168.75mm} % Format 16:9
\geometry{margin = 15mm}
\geometry{marginparsep = 2mm}
\geometry{marginparwidth = 8mm}
\geometry{footskip = 14mm}
% Color Support
\usepackage{xcolor}
% paracol
\usepackage{paracol}
\setlength{\columnseprule}{1pt}
\setlength{\columnsep}{2em}
% subparagraph is numberes
\setcounter{secnumdepth}{5}
% Code from David
% -------------------------
\makeatletter
\def\zzz{%
\long\def\sectionlinesformat##1##2##3##4{%
\@hangfrom {\hskip ##2##3}{\textcolor{red}{##4}}}}
\makeatother
\addtokomafont{subparagraph}{\zzz}
%\addtokomafont{subparagraph}{\color{red}}
% -------------------------
% http://texwelt.de/wissen/fragen/10289/wie-andere-ich-die-abstande-uberunter-section-subsection-subsubsection
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 1\baselineskip,
innerskip = 0\baselineskip]{chapter}
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 0.25\baselineskip]{section}
\RedeclareSectionCommand[
beforeskip = 0\baselineskip,
afterskip = 1sp]{subparagraph}
%% Dummy-Texte
\usepackage{blindtext}
\begin{document}
\chapter{Chapter Heading}
% ### ### ###
\begin{paracol}{2}
% --- --- ---
\begin{leftcolumn*}
% --- ---
\section{Section Heading Left}
\subparagraph{Subparagraph Heading Left}
% ---
\blindtext
\vspace{10mm}
% ---
% --- ---
\end{leftcolumn*}
% --- --- ---
% --- --- ---
\begin{rightcolumn}
% --- ---
\section*{Section Heading Right}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{rightcolumn}
% --- --- ---
\begin{leftcolumn*}
% --- ---
\section{Section Heading Left}
\subparagraph{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{leftcolumn*}
% --- --- ---
% --- --- ---
\begin{rightcolumn}
% --- ---
\section*{Section Heading Right (Without Numbering)}
\subparagraph*{Subparagraph Heading Right (Without Numbering)}
% ---
\blindtext
% ---
% --- ---
\end{rightcolumn}
% --- --- ---
\end{paracol}
% ### ### ###
\end{document}
更新(2018-04-27)
我联系了《KOMA》的作者(马库斯·科姆,德国)以下是他所推荐内容的摘要。
- 最好使用
\sbox
而不是\setbox
。- 或者 在使用 时使用
\color@begingroup
和。\color@endgroup
\setbox
- 的定义
\sbox
表明应该/可以如何做。- 在(跨越多页的疯狂盒子技巧)的情况下
paracol
,你需要注意颜色堆栈。我还联系了该软件包的作者
paracol
(中島宏司,日本)。他想调查一下。我还联系了海克·奥伯迪克,color-stack 相关软件包的作者。不过他无法详细研究它。
更新(2018-05-03)
该包的作者
paracol
回复了,对我来说看起来不太好:)。简而言之:对于当前版本来说,颜色是一个问题(在极少数情况下,比如我的)paracol
。我调查了您的问题,发现了以下几点。(1)根本原因在于 paracol(即不在 KOMA 中)。(2)修复 paracol 中的错误极其困难,但我以后会尝试。
这里我对上述每个问题进行稍微详细的解释。
(1) 根本原因文本着色是 paracol 最棘手的实现问题之一,因为例如,我们必须为左列中一些跨页线着色,而不影响右列的着色。paracol 中的着色机制通常运行良好,但在某些特殊情况下,例如您的 MWE,它无法正确为文本着色。更具体地说,我们在以下情况下面临麻烦。 (a) 当页面空间太小而无法容纳整个行时,会给出一系列不可断行的行。在您的例子中,该序列由第 1.2 节的标题、小段的标题和普通段落的前两行组成。 (b) 该序列有彩色段落。在您的例子中,节标题和小段标题是彩色的(黑色和红色)并且是单行段落。 (c)
如果序列是可拆分的,则可以将其分成两页,第二页将以彩色段落开始。在您的例子中,TeX 会在节标题 和小段标题
之间找到分页点。
当 paracol 的着色机制看到这样的序列时,它会不恰当地在序列中插入分页点,并且误解第二页第一行(子段落标题)的着色在第一页就开始了,从而导致不正确的着色(将子段落标题后面的所有文本都染成红色)。(2) (近乎) 完美修复 由于您遇到的问题表明 paracol 着色机制的基本思想不合适,因此修复该错误需要完全重新设计该机制,即使这是可能的。我有一个修复想法,并将检查其可行性,但我不能确定何时,甚至是否,该修复会被纳入 paracol 的未来版本中。
更新(2018-05-08)
该软件包的作者
paracol
生成了一个新版本 (1.34),将在未来几周内公开发布。我现在有机会用我当前的实际文档对其进行测试:它在我当前的文档中有效!最后更新(2018-05-18)
1.34 版
paracol
已修复此问题,现已发布加拿大运输安全局现在。
答案1
pdftex 会警告你
pdfTeX warning: pdflatex: pop empty color page stack 0
如果你将定义改为
\makeatletter
\def\zzz{%
\long\def\sectionlinesformat##1##2##3##4{%
\@hangfrom {\hskip ##2##3}{\textcolor{red}{##4}}}}
\makeatother
\addtokomafont{subparagraph}{\zzz}
然后红色停留在标题中,没有任何堆栈已损坏的警告。间接定义\textcolor
在标题文本周围插入而不会干扰标题布局代码。