В педагогических целях я хотел бы выделить некоторые символы в слове жирным шрифтом, красным цветом или любым другим подходящим способом.
Поскольку я использую рукописные шрифты (German Schulschriften wedn
и French Cursive frcursive
), я привязан к тому, чтобы лигатуры работали хорошо. К сожалению, лигатуры блокируются, если вы переключаете серию или цвет в середине слова.
Я был бы рад решению XeLaTeX или LuaLaTeX. Если нужно, то и PDFLaTeX. И как уже говорилось, любой вид выделения подойдет.
Вот MWE:
\documentclass[varwidth]{standalone}
\usepackage[ngerman,frenchb]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setmonofont[Scale=.75]{Linux Libertine Mono O}
\setsansfont[Scale=MatchLowercase]{Linux Biolinum O}
\usepackage{wedn}
\newcommand{\schschrift}{\selectlanguage{ngerman} \wedn\upshape}
\usepackage{frcursive}
\usepackage{xcolor}
\begin{document}
\newcommand{\fex}[3]{#1\textbf{#2}#3}
% \renewcommand{\fex}[3]{#1{\bfseries #2}#3}
{
\schschrift
\fex{W}{ö}{rter} -- Wörter
}
{
\cursive
\fex{incr}{oy}{able} -- incroyable
}
\renewcommand{\fex}[3]{#1\textcolor{red}{#2}#3}
{
\schschrift
\fex{W}{ö}{rter} -- Wörter
}
{
\cursive
\fex{incr}{oy}{able} -- incroyable
}
\renewcommand{\fex}[3]{#1#2#3}
{
\schschrift
\fex{W}{ö}{rter} -- Wörter
}
{
\cursive
\fex{incr}{oy}{able} -- incroyable
}
\end{document}
Вы можете видеть, что в первых двух строках W и ö плохо связываются, также как r и o + y и a, когда они выделены жирным шрифтом или красным. Сравните с невыделенными версиями.
решение1
Вы можете попробовать пакет luacolor. Он не вставляет whatsits и поэтому не разделяет лигатуры и не нарушает кернинг. Но он не может окрасить одну часть лигатуры в цвет, отличный от цвета остальных. Лигатура — это один глиф, и она должна иметь один цвет. Поэтому вы можете получить довольно неожиданные результаты (последний пример, возможно, ошибка):
\documentclass{article}
\usepackage[ngerman,french]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\setmonofont[Scale=.75]{Linux Libertine Mono O}
\setsansfont[Scale=MatchLowercase]{Linux Biolinum O}
\usepackage{wedn}
\newcommand{\schschrift}{\selectlanguage{ngerman} \wedn\upshape}
\usepackage{frcursive}
\usepackage{xcolor}
\usepackage{luacolor}
\begin{document}
fi\textcolor{red}{ff}
f\textcolor{red}{if}f
\newcommand{\fex}[3]{#1\textcolor{red}{#2}#3}
{
\schschrift
W\textcolor{red}{ö}rter -- Wörter
}
{\cursive i\textcolor{red}{croy} in\textcolor{red}{croy}
i\textcolor{red}{nc}roy}
\end{document}
Будьте осторожны со специальными шрифтами: кодировка T1 не очень подходит для lualatex (и, по крайней мере, часть шрифтов, похоже, использует нестандартную кодировку T1).
решение2
Я придумал решение с использованием фонового цвета.
По сути, он печатает слово дважды друг над другом. Это достигается с помощью \rlap
для первой печати (не забудьте\leavevmode
в самом начале абзаца, или используйте \mbox[0pt]{l}{...}
альтернативно). Этот первый отпечаток печатает первую часть с \hphantom
, затем вторую часть (выделенную) серым на сером. После этого второй отпечаток печатает все слово обычным цветом переднего плана поверх него, так что средняя часть отображается цветом переднего плана поверх серого фона. Поскольку наличие или отсутствие лигатур изменяет ширину слова (или частей слова), выравнивание между двумя версиями необходимо отрегулировать вручную с помощью небольшого кернинга.
\documentclass[varwidth,landscape]{standalone}
\usepackage[ngerman,frenchb]{babel}
\usepackage{fontspec}
\setmainfont{Linux Libertine O}
\usepackage{frcursive}
\usepackage{wela,wedn}
\newcommand{\schschrift}{\wedn\upshape\bfseries}
\usepackage{xcolor}
\definecolor{FR}{rgb}{.2717,.4566,.2717}
\definecolor{DE}{rgb}{.4566,.2717,.2717}
\definecolor{fond}{gray}{.8}
\setlength{\fboxsep}{.1pt}
\begin{document}
{
\cursive\color{FR}
\leavevmode\rlap{%
\hphantom{pa}\kern-.3ex%
\colorbox{fond}{\textcolor{fond}{tt}}%
}%
patte
\leavevmode\rlap{%
\hphantom{incr}\kern-.3ex%
\colorbox{fond}{\textcolor{fond}{oy}}%
}%
incroyable
}
}
{
\selectlanguage{ngerman}\schschrift\color{DE}
\leavevmode\rlap{%
\hphantom{W}%
\colorbox{fond}{\textcolor{fond}{ö}}%
}Wörter
\renewcommand{\schschrift}{\wela\upshape\bfseries}\schschrift\color{DE}
\leavevmode\rlap{%
\hphantom{W}\kern-.3ex%
\colorbox{fond}{\textcolor{fond}{ö}}%
}Wörter
}
\end{document}
Скриншот:
Остается одна проблема: когда глиф выходит за пределы своей ограничивающей рамки, он может выглядеть странно, см. <ö> первогоВёртер. Но сейчас я счастлив и не буду задавать новый вопрос по этой незначительной проблеме.
Редактировать:
Благодаряэтот ответ, я мог бы заменить фон \colorbox
и его маленькую проблему с помощью правила правильных размеров (нужен пакет calc
):
\leavevmode\rlap{%
\hphantom{W}\kern-.3ex%
\textcolor{fond}{\rule[\depthof{ö}*{-1}]{\widthof{ö}}{\totalheightof{ö}}}%
}%
Wörter