디센더 생략 밑줄

디센더 생략 밑줄

나는 이것이 모범 사례로 간주된다는 것을 잘 알고 있습니다.~ 아니다타자기나 손글씨 외에 밑줄을 긋는 것. 하지만 그럼에도 불구하고 때로는 필요한 경우가 있습니다.

내 생각에는 인쇄물에서 밑줄을 긋는 인쇄상 가장 덜 불쾌한 방법은 디센더를 생략하는 것입니다. 저도 이렇게 손글씨로 배웠어요. 미리 만들어진 밑줄 변형을 제공하는 글꼴은 거의 없지만 일부 텍스트 프로세서(예: OS X 텍스트 엔진)는 사용된 글꼴에 따라 이 효과를 에뮬레이션하는 데 허용되는 작업을 수행합니다.

OS X 텍스트편집 밑줄

동일한 작업을 수행하기 위해 밑줄을 긋는 기존 방법/패키지를 어떻게 조정합니까?

보너스로, 글꼴 및 텍스트 스타일별로 동작(생략된 부분의 범위, 어떤 문자에 적용할지)을 조정할 수 있기를 바랍니다. XeLaTeX를 사용하는 것이 좋습니다.

답변1

각 문자에 대해 다음과 같이 할 수 있습니다.

  • 밑줄을 긋는다
  • 동일하지만 더 굵은 문자로 줄을 덮어쓰거나 왼쪽 및 오른쪽으로 이동한 문자로 배경색이나 흰색으로 덮어씁니다.
  • 편지를 쓰세요

따라서 간격이 일치하는 밑줄이 표시됩니다.

여기서는 Marco의 접근 방식을 이런 방식으로 수정했습니다 soul. 단지 제가 의미하는 바를 보여주기 위해 개선될 수 있습니다(대담함, 루프).

\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}

공백으로 밑줄 긋기

답변2

contour다음은 패키지 를 사용하는 솔루션입니다 ulem.

IMO에서는 특히 제목 밑줄에 매우 보기 좋은 밑줄을 생성합니다.

\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}

산출:

예제 출력

확대:

예시 세부정보

단점은 밑줄 깊이가 윤곽선에 의해 숨겨질 수 있기 때문에 기준선에 매우 가깝지 않다는 것입니다.

답변3

여기에서 유용하다고 생각했기 때문에 밑줄의 깊이, 두께 및 너비를 제어할 수 있는 위의 Stefans 답변을 수정했습니다. 예를 들어 글꼴이 더 크거나 굵은 경우 유용할 수 있습니다. 구문은 다음과 같습니다 \varul<width>[depth][thickness]{stuff}. 여기서:

  • <width>선택 사항이며 의 배수로 제공 됩니다 1/100 em. 예를 들어 <10>간격 너비는 입니다 0.1em. 기본값은 다음과 같습니다.5
  • [depth]선택 사항이며 밑줄을 그릴 기준선 아래의 거리를 지정하는 양수 값(단위 포함)으로 제공됩니다. 기본값은 입니다 0.2ex.
  • [thickness]선택 사항이며 밑줄 두께를 지정하는 양수 값(단위 포함)으로 제공됩니다. 기본값은 다음과 같습니다.0.1ex
  • 네 번째 필수 인수는 밑줄을 긋고 싶은 내용입니다.

이는 단락과 줄 바꿈 전체에서 작동하지만 간격이 아주 약간 변경될 수 있습니다.

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

\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}

Tobi의 편집: \fp_mul:Nn현재 TeXlive에서는 작동하지 않으므로 두 줄을 \fp_set:Nn \l_tmpa_fp {#1 * .01}.

답변4

저는 두 가지 이유로 CDSousa의 답변을 다음과 같이 적용하고 있습니다. 첫째, 어떤 이유로 XCharter + 윤곽선이 다른 텍스트보다 더 거칠어 보입니다. 둘째, 가까운 밑줄을 허용하기 위해(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%

예: \myul{1.75pt}{.5pt}{2}{Blupp of (that's \emph{of}, not \emph{off}, of course) a great Synopsis}밑줄 깊이 1.75pt, 밑줄 두께 .5pt및 간격이 있으며 2pt다음과 같습니다.이것

관련 정보