sublinhar omitindo os descendentes

sublinhar omitindo os descendentes

Estou muito ciente de que isso é considerado uma prática recomendadanãousar sublinhados fora das máquinas de escrever e na caligrafia. Mas às vezes é necessário mesmo assim.

Na minha opinião, a maneira tipograficamente menos ofensiva de sublinhar na impressão é omitir os descendentes. Foi assim também que aprendi a fazer isso com caligrafia. Muito poucas fontes oferecem uma variante sublinhada pré-fabricada, mas alguns processadores de texto (por exemplo, mecanismo de texto do OS X) fazem - dependendo da fonte usada - um trabalho aceitável na emulação deste efeito:

Sublinhado do OS X TextEdit

Como eu ajustaria qualquer uma das formas/pacotes existentes para sublinhar para fazer o mesmo?

Como bônus, gostaria de poder ajustar o comportamento (extensão da parte omitida, aplicar a quais letras) por fonte e estilo de texto, de preferência trabalhando com XeLaTeX.

Responder1

Poderíamos fazer para cada letra:

  • Produza o sublinhado
  • Substitua a linha pela mesma letra, mas mais em negrito, ou por uma letra deslocada para a esquerda e para a direita, mas em segundo plano ou na cor branca
  • Escreva a carta

Portanto, obteríamos um sublinhado com lacunas correspondentes.

Aqui modifiquei a soulabordagem do Marco desta forma, apenas para uma demonstração do que quero dizer, que poderia ser melhorado (ousadia, loop):

\setcounter{errorcontextlines}{999}
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{soul}
\usepackage{color}
\makeatletter
\newcommand*{\whiten}[1]{\llap{\textcolor{white}{{\the\SOUL@token}}\hspace{#1pt}}}
\DeclareRobustCommand*\myul{%
    \def\SOUL@everyspace{\underline{\space}\kern\z@}%
    \def\SOUL@everytoken{%
     \setbox0=\hbox{\the\SOUL@token}%
     \ifdim\dp0>\z@
        \raisebox{\dp0}{\underline{\phantom{\the\SOUL@token}}}%
        \whiten{1}\whiten{0}%
        \whiten{-1}\whiten{-2}%
        \llap{\the\SOUL@token}%
     \else
        \underline{\the\SOUL@token}%
     \fi}%
\SOUL@}
\makeatother
\begin{document}
\sffamily\Huge
\myul{jumping quickly}
\end{document}

sublinhando com lacunas

Responder2

Aqui está uma solução usando pacotes contoure ulem.

IMO, isso produz um sublinhado muito bonito, especialmente para sublinhar o título:

\documentclass{article}

\usepackage[outline]{contour}

\usepackage{ulem}
\normalem % use classical emph

\newcommand \myul[4]{%
  \begingroup%
  \renewcommand \ULdepth {#1}%
  \renewcommand \ULthickness {#2}%
  \contourlength{#3}%
  \uline{\phantom{#4}}\llap{\contour{white}{#4}}%
  \endgroup%
}

\newcommand \myulline[4]{%
  \begingroup%
  \renewcommand \ULdepth {#1}%
  \renewcommand \ULthickness {#2}%
  \contourlength{#3}%
  \noindent\rlap{\uline{\hspace{\textwidth}}}\contour{white}{#4}%
  \endgroup%
}

\begin{document}
\bfseries

\Huge
\myulline{5pt}{1pt}{2pt}{Chapter Eight}

\vspace{1cm}

\normalsize
\normalfont

Test. \myul{2pt}{0.5pt}{1pt}{Quit jumping quickly!} Test.

Test. \myul{1.2pt}{0.5pt}{0.5pt}{Quit jumping quickly!} Test.

\end{document}

Saída:

saída de exemplo

Fechar-se:

detalhe de exemplo

Como desvantagem, a profundidade do sublinhado não pode estar muito próxima da linha de base porque pode ser ocultada pelo contorno.

Responder3

Simplesmente porque achei útil aqui está uma modificação da resposta de Stefan acima que permite controlar a profundidade, espessura e largura do sublinhado. Isto pode ser útil, por exemplo, com uma fonte maior ou mais em negrito. A sintaxe é: \varul<width>[depth][thickness]{stuff}onde:

  • <width>é opcional e dado como um múltiplo de 1/100 em, por exemplo, <10>daria uma largura de intervalo de 0.1em. o valor padrão é5
  • [depth]é opcional e é fornecido como um valor positivo (incluindo unidades) que especifica a distância abaixo da linha de base para desenhar o sublinhado. O valor padrão é 0.2ex.
  • [thickness]é opcional e é fornecido como um valor positivo (incluindo unidades) especificando a espessura do sublinhado. o valor padrão é0.1ex
  • O quarto argumento obrigatório é o que você deseja sublinhar.

Isso funcionará em parágrafos e quebras de linha, mas poderá alterar ligeiramente o espaçamento.

insira a descrição da imagem aqui

\documentclass{article}
\usepackage{soul}
\usepackage{xcolor}
\usepackage{xparse}
\makeatletter

\ExplSyntaxOn
\cs_new:Npn \white_text:n #1
  {
    \fp_set:Nn \l_tmpa_fp {#1 * .01}
    \llap{\textcolor{white}{\the\SOUL@syllable}\hspace{\fp_to_decimal:N \l_tmpa_fp em}}
    \llap{\textcolor{white}{\the\SOUL@syllable}\hspace{-\fp_to_decimal:N \l_tmpa_fp em}}
  }
\NewDocumentCommand{\whiten}{ m }
    {
      \int_step_function:nnnN {1}{1}{#1} \white_text:n
    }
\ExplSyntaxOff

\NewDocumentCommand{ \varul }{ D<>{5} O{0.2ex} O{0.1ex} +m } {%
\begingroup
\setul{#2}{#3}%
\def\SOUL@uleverysyllable{%
   \setbox0=\hbox{\the\SOUL@syllable}%
   \ifdim\dp0>\z@
      \SOUL@ulunderline{\phantom{\the\SOUL@syllable}}%
      \whiten{#1}%
      \llap{%
        \the\SOUL@syllable
        \SOUL@setkern\SOUL@charkern
      }%
   \else
       \SOUL@ulunderline{%
         \the\SOUL@syllable
         \SOUL@setkern\SOUL@charkern
       }%
   \fi}%
    \ul{#4}%
\endgroup
}

\makeatother
\begin{document}

\varul{\Huge jumping quickly}\par\smallskip
\varul[1pt][1pt]{\Huge jumping quickly}

\end{document}

Editado por Tobi: \fp_mul:Nnnão funciona em um TeXlive atual, então substituí as duas linhas por apenas \fp_set:Nn \l_tmpa_fp {#1 * .01}.

Responder4

Estou usando a seguinte adaptação da resposta do CDSousa, por dois motivos: primeiro, o contorno do XCharter + por algum motivo parece mais grosseiro que o outro texto; em segundo lugar, para permitir sublinhar de perto (o inconveniente apontado por CDSousa):

\usepackage{ulem}
\normalem % use classical emph
\usepackage{color}
\usepackage{pgffor}
\newcommand\myul[4]{% arg 1: underline depth; arg 2: underline thickness; arg 3: space around descenders in pt (!)
  \begingroup%
  \renewcommand\ULdepth{#1}%
  \renewcommand\ULthickness{#2}%
  \uline{\phantom{\smash{#4}}}%
  \foreach \hshift in {0.0, 0.1, ..., #3}{%
    \foreach \upshift in {-0.4, -0.3, ..., 1.0}{%
      \llap{\color{white}\raisebox{\upshift0pt}[0pt]{#4}\hspace{\hshift0pt}}%
      \llap{\color{white}\raisebox{\upshift0pt}[0pt]{#4}\hspace{-\hshift0pt}}%
    }%
  }%
  \llap{#4}%
  \endgroup%

Exemplo: \myul{1.75pt}{.5pt}{2}{Blupp of (that's \emph{of}, not \emph{off}, of course) a great Synopsis}tem profundidade de sublinhado 1.75pt, espessura de sublinhado .5pte espaçamento 2pte se parece comesse

informação relacionada