%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BA%D1%80%D1%8B%D0%B2%D0%B0%D0%BB%D0%B8%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83.png)
Я пытаюсь подчеркнуть форматированный текст.
Я пытаюсь сделать следующее:
\usepackage{xcolor}
\usepackage{tikz}
\newcommand{\udensdot}[1]{%
\tikz[baseline=(todotted.base)]{
\node[inner sep=1pt,outer sep=0pt] (todotted) {#1};
\draw[densely dotted] (todotted.south west) -- (todotted.south east);
}%
}%
\newcommand{\ans}[1]{\udensdot{
\textcolor{blue}{\fontfamily{pzc}\selectfont{~#1~}}
}
}
\begin{document}
I go to \ans{the} cinema in \ans{the} evening \ans{eventually}.
\end{document}
Я получаю следующий результат, где последняя строка находится ниже остальных:
Мне бы хотелось, чтобы все строки были на одном уровне и чтобы выносные элементы (в данном случае, например, «y») перекрывали нижнюю линию, но я не могу понять, как этого добиться.
Какие-либо предложения?
решение1
Хотите ли вы, чтобы черные точки закрывали синий цвет текстовой фразы, как на этой картинке?:
Если нет, но вы хотите, чтобы точки располагались на базовой линии строки текста, а синий цвет текстовой фразы перекрывал черный цвет точек, вы можете создать узел с \phantom
, нарисовать линию, а затем создать узел с текстом вместо \phantom
:
\documentclass[border=6pt]{standalone}
\usepackage{xcolor}
\usepackage{tikz}
\newcommand{\udensdot}[1]{%
\tikz[baseline=(todotted.base)]{
\node[inner sep=1pt,outer sep=0pt] (todotted) {\phantom{\mbox{#1}}};
\draw[densely dotted] (todotted.base west) -- (todotted.base east);
\node at (todotted) [inner sep=1pt,outer sep=0pt] {\mbox{#1}};
}%
}
\newcommand{\ans}[1]{\udensdot{%
\textcolor{blue}{\fontfamily{pzc}\selectfont{~#1~}}%
}%
}
\begin{document}
I go to \ans{the} cinema in \ans{the} evening \ans{eventually}.
\end{document}
решение2
Вместо создания собственного подчеркивания в TikZ вы можете использовать такой пакет lua-ul
:
% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{lua-ul}
\usepackage{xcolor}
\usepackage{fontspec}
\newfontfamily{\zapf}{Zapf Chancery}
\makeatletter
\newunderlinetype\beginUnderDot{\cleaders\hb@xt@ .44em{\hss\raisebox{-0.5ex}{.}\hss}}
\makeatother
\NewDocumentCommand\underDot{+m}{{\beginUnderDot#1}}
\newcommand{\ans}[1]{%
{\zapf\underDot{~\textcolor{blue}{#1}~}}%
}
\begin{document}
I go to \ans{the} cinema in \ans{the} evening \ans{eventually}.
\end{document}
Или ulem
:
\documentclass{article}
\usepackage[normalem]{ulem}
\usepackage{xcolor}
\newcommand{\ans}[1]{%
{\fontfamily{pzc}\selectfont\dotuline{~\textcolor{blue}{#1}~}}%
}
\begin{document}
I go to \ans{the} cinema in \ans{the} evening \ans{eventually}.
\end{document}
решение3
Решением является использование base west
и base east
в команде \udensdot
.
\documentclass[border=6pt]{standalone}
\usepackage{xcolor}
\usepackage{tikz}
\newcommand{\udensdot}[1]{%
\tikz[baseline=(todotted.base)]{
\node[inner sep=1pt,outer sep=0pt] (todotted) {#1};
\draw[densely dotted] (todotted.base west) -- (todotted.base east);
}%
}
\newcommand{\ans}[1]{\udensdot{%
\textcolor{blue}{\fontfamily{pzc}\selectfont{~#1~}}%
}%
}
\begin{document}
I go to \ans{the} cinema in \ans{the} evening \ans{eventually}.
\end{document}