
나는 이것이 모범 사례로 간주된다는 것을 잘 알고 있습니다.~ 아니다타자기나 손글씨 외에 밑줄을 긋는 것. 하지만 그럼에도 불구하고 때로는 필요한 경우가 있습니다.
내 생각에는 인쇄물에서 밑줄을 긋는 인쇄상 가장 덜 불쾌한 방법은 디센더를 생략하는 것입니다. 저도 이렇게 손글씨로 배웠어요. 미리 만들어진 밑줄 변형을 제공하는 글꼴은 거의 없지만 일부 텍스트 프로세서(예: 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
다음과 같습니다.