단어 중간에 글꼴 시리즈나 색상을 전환하면 합자가 손실됩니다.

단어 중간에 글꼴 시리즈나 색상을 전환하면 합자가 손실됩니다.

교육적 목적을 위해 굵은 글씨나 빨간색 등 어떤 것이든 효과가 있는 단어를 통해 일부 문자를 강조하고 싶습니다.

wedn손글씨 글꼴(독일어 Schulschriften 및 프랑스어 필기체 ) 을 사용하기 때문에 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 패키지를 사용해 볼 수 있습니다. 내용을 삽입하지 않으므로 합자를 분할하거나 커닝을 방해하지 않습니다. 그러나 합자의 한 부분을 나머지 부분과 다른 색상으로 칠할 수는 없습니다. 합자는 단일 문자 모양이며 단일 색상을 가져야 합니다. 따라서 매우 놀라운 결과를 얻을 수 있습니다(마지막 예는 아마도 버그일 수 있습니다).

\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

여기에 이미지 설명을 입력하세요

관련 정보