
Word에서는 모든 종류의 글꼴 서식을 허용합니다.
위의 예는 취소선/취소선(예: 이 )과 밑줄을 결합합니다. 나도 똑같이 할 수 있으면 좋겠지만 둘 다 안돼ulem
...도 아니다soul
이를 편리한 방법으로 허용합니다.
ulem
:\documentclass{article} \usepackage[a6paper,showframe]{geometry}% Just for this example \usepackage{ulem} \begin{document} Lorem ipsum dolor sit amet, \sout{consectetur adipiscing elit. Praesent} in nisi magna. Mauris \sout{auctor gravida} fermentum. Proin enim \uline{massa, \sout{\textbf{lobortis in} ligula} vel, convallis} fermentum nulla. \uline{Nam in mattis nulla}. Vestibulum vel \uline{auctor orci. Praesent \textit{\textbf{ornare, eros} ac} euismod} congue, turpis est facilisis nisi, a sollicitudin massa lectus imperdiet tellus. Duis at tempor velit. \sout{Nulla \uline{gravida}, dolor in cursus}. \end{document}
soul
:그만큼
soul
선적 서류 비치"중첩soul
명령이 작동하지 않습니다"라고 명시적으로 명시되어 있습니다.따라서 다음 예제는 오류 없이 컴파일되지 않습니다.
\documentclass{article} \usepackage[a6paper,showframe]{geometry}% Just for this example \usepackage{soul} \begin{document} Lorem ipsum dolor sit amet, \st{consectetur adipiscing elit. Praesent} in nisi magna. Mauris \st{auctor gravida} fermentum. Proin enim \ul{massa, \st{\textbf{lobortis in} ligula} vel, convallis} fermentum nulla. \ul{Nam in mattis nulla}. Vestibulum vel \ul{auctor orci. Praesent \textit{\textbf{ornare, eros} ac} euismod} congue, turpis est facilisis nisi, a sollicitudin massa lectus imperdiet tellus. Duis at tempor velit. \st{Nulla \ul{gravida}, dolor in cursus}. \end{document}
이상적으로는 이러한 글꼴 "효과" 매크로를 상호 교환적으로 사용할 수 있기를 원합니다. 밑줄 안의 취소선 또는 글꼴 사용에 영향을 주지 않고 취소선 내부 밑줄(예:이탤릭체또는용감한). Word의 출력은 다음과 같습니다.
(다음 질문도 참조하세요.밑줄 + 소울을 사용한 취소선)
답변1
다음은 Martin의 답변에 대한 적응입니다.LaTeX의 멋진 텍스트 강조내가 \tikzst
Martin의 \tikzul
.
이는 다음의 예를 보여줍니다.
- 취소선과 밑줄
- 삼진아웃 및 하이라이트
메모:
일반적으로
\tikzmark
솔루션에는 두 번의 실행이 필요합니다. 의 중첩된 사용이 있으므로\tikzmark
다음이 필요합니다.삼달린다. (이 점을 지적해 주신 @Werner에게 감사드립니다).tikzmark
중첩된 의 위치는 상위의 위치에 따라 달라지므로 추가 실행이 필요합니다\tikzmark
. 그래서 첫 번째 실행에서는 "외부" 위치를 안정화하고\tikzmark
, 두 번째 실행에서는 "내부" 위치를 안정화하고\tikzmark
, 세 번째 실행에서는 실제 드로잉을 수행합니다.출처
\tikzmark
는텍스트 본문 옆에 큰 중괄호 추가.
암호:
\documentclass[twoside,11pt]{book}
\usepackage{zref-abspage}
\usepackage{zref-user}
\usepackage{tikz}
\usepackage{atbegshi}
\usetikzlibrary{calc,decorations.pathmorphing}
\makeatletter
\newcommand{\currentsidemargin}{%
\ifodd\zref@extract{textarea-\thetextarea}{abspage}%
\oddsidemargin%
\else%
\evensidemargin%
\fi%
}
\newcounter{textarea}
\newcommand{\settextarea}{%
\stepcounter{textarea}%
\zlabel{textarea-\thetextarea}%
\begin{tikzpicture}[overlay,remember picture]
% Helper nodes
\path (current page.north west) ++(\hoffset, -\voffset)
node[anchor=north west, shape=rectangle, inner sep=0, minimum width=\paperwidth, minimum height=\paperheight]
(pagearea) {};
\path (pagearea.north west) ++(1in+\currentsidemargin,-1in-\topmargin-\headheight-\headsep)
node[anchor=north west, shape=rectangle, inner sep=0, minimum width=\textwidth, minimum height=\textheight]
(textarea) {};
\end{tikzpicture}%
}
\usepackage{lipsum}
\newcommand\xlipsum[1][]{{\let\par\relax\lipsum*[#1]}}
\tikzset{tikzul/.style={yshift=-.75\dp\strutbox}}
\newcounter{tikzul}%
\newcommand\tikzul[1][]{%
\begingroup
\global\tikzullinewidth\linewidth
\def\tikzulsetting{[#1]}%
\stepcounter{tikzul}%
\settextarea
\zlabel{tikzul-begin-\thetikzul}%
\tikz[overlay,remember picture,tikzul] \coordinate (tikzul-\thetikzul) at (0,0);% Modified \tikzmark macro
\ifnum\zref@extract{tikzul-begin-\thetikzul}{abspage}=\zref@extract{tikzul-end-\thetikzul}{abspage}
\else
\AtBeginShipoutNext{\tikzul@endpage{#1}}%
\fi
\bgroup
\def\par{\ifhmode\unskip\fi\egroup\par\@ifnextchar\noindent{\noindent\tikzul[#1]}{\tikzul[#1]\bgroup}}%
\aftergroup\endtikzul
\let\@let@token=%
}
\newlength\tikzullinewidth
\def\tikzul@endpage#1{%
\setbox\AtBeginShipoutBox\hbox{%
\box\AtBeginShipoutBox
\hbox{%
\begin{tikzpicture}[overlay,remember picture,tikzul]
\draw[#1]
let \p1 = (tikzul-\thetikzul), \p2 = ([xshift=\tikzullinewidth+\@totalleftmargin]textarea.south west) in
\ifdim\dimexpr\y1-\y2<.5\baselineskip
(\x1,\y1) -- (\x2,\y1)
\else
let \p3 = ([xshift=\@totalleftmargin]textarea.west) in
(\x1,\y1) -- +(\tikzullinewidth-\x1+\x3,0)
% (\x3,\y2) -- (\x2,\y2)
(\x3,\y1)
\myloop{\y1-\y2+.5\baselineskip}{%
++(0,-\baselineskip) -- +(\tikzullinewidth,0)
}%
\fi
;
\end{tikzpicture}%
}}%
}%
\def\endtikzul{%
\zlabel{tikzul-end-\thetikzul}%
\ifnum\zref@extract{tikzul-begin-\thetikzul}{abspage}=\zref@extract{tikzul-end-\thetikzul}{abspage}
\begin{tikzpicture}[overlay,remember picture,tikzul]
\expandafter\draw\tikzulsetting
let \p1 = (tikzul-\thetikzul), \p2 = (0,0) in
\ifdim\y1=\y2
(\x1,\y1) -- (\x2,\y2)
\else
let \p3 = ([xshift=\@totalleftmargin]textarea.west), \p4 = ([xshift=-\rightmargin]textarea.east) in
(\x1,\y1) -- +(\tikzullinewidth-\x1+\x3,0)
(\x3,\y2) -- (\x2,\y2)
(\x3,\y1)
\myloop{\y1-\y2}{%
++(0,-\baselineskip) -- +(\tikzullinewidth,0)
}%
\fi
;
\end{tikzpicture}%
\else
\settextarea
\begin{tikzpicture}[overlay,remember picture,tikzul]
\expandafter\draw\tikzulsetting
let \p1 = ([xshift=\@totalleftmargin,yshift=-.5\baselineskip]textarea.north west), \p2 = (0,0) in
\ifdim\dimexpr\y1-\y2<.5\baselineskip
(\x1,\y2) -- (\x2,\y2)
\else
let \p3 = ([xshift=\@totalleftmargin]textarea.west), \p4 = ([xshift=-\rightmargin]textarea.east) in
(\x3,\y2) -- (\x2,\y2)
(\x3,\y2)
\myloop{\y1-\y2}{%
++(0,+\baselineskip) -- +(\tikzullinewidth,0)
}
\fi
;
\end{tikzpicture}%
\fi
\endgroup
}
% -------------------------------------------------------------- Additions by Peter Grill
\tikzset{tikzst/.style={yshift=0.5\dp\strutbox}}
\newcounter{tikzst}%
\newcommand\tikzst[1][]{%
\begingroup
\global\tikzstlinewidth\linewidth
\def\tikzstsetting{[#1]}%
\stepcounter{tikzst}%
\settextarea
\zlabel{tikzst-begin-\thetikzst}%
\tikz[overlay,remember picture,tikzst] \coordinate (tikzst-\thetikzst) at (0,0);% Modified \tikzmark macro
\ifnum\zref@extract{tikzst-begin-\thetikzst}{abspage}=\zref@extract{tikzst-end-\thetikzst}{abspage}
\else
\AtBeginShipoutNext{\tikzst@endpage{#1}}%
\fi
\bgroup
\def\par{\ifhmode\unskip\fi\egroup\par\@ifnextchar\noindent{\noindent\tikzst[#1]}{\tikzst[#1]\bgroup}}%
\aftergroup\endtikzst
\let\@let@token=%
}
\newlength\tikzstlinewidth
\def\tikzst@endpage#1{%
\setbox\AtBeginShipoutBox\hbox{%
\box\AtBeginShipoutBox
\hbox{%
\begin{tikzpicture}[overlay,remember picture,tikzst]
\draw[#1]
let \p1 = (tikzst-\thetikzst), \p2 = ([xshift=\tikzstlinewidth+\@totalleftmargin]textarea.south west) in
\ifdim\dimexpr\y1-\y2<.5\baselineskip
(\x1,\y1) -- (\x2,\y1)
\else
let \p3 = ([xshift=\@totalleftmargin]textarea.west) in
(\x1,\y1) -- +(\tikzstlinewidth-\x1+\x3,0)
% (\x3,\y2) -- (\x2,\y2)
(\x3,\y1)
\myloop{\y1-\y2+.5\baselineskip}{%
++(0,-\baselineskip) -- +(\tikzstlinewidth,0)
}%
\fi
;
\end{tikzpicture}%
}}%
}%
\def\endtikzst{%
\zlabel{tikzst-end-\thetikzst}%
\ifnum\zref@extract{tikzst-begin-\thetikzst}{abspage}=\zref@extract{tikzst-end-\thetikzst}{abspage}
\begin{tikzpicture}[overlay,remember picture,tikzst]
\expandafter\draw\tikzstsetting
let \p1 = (tikzst-\thetikzst), \p2 = (0,0) in
\ifdim\y1=\y2
(\x1,\y1) -- (\x2,\y2)
\else
let \p3 = ([xshift=\@totalleftmargin]textarea.west), \p4 = ([xshift=-\rightmargin]textarea.east) in
(\x1,\y1) -- +(\tikzstlinewidth-\x1+\x3,0)
(\x3,\y2) -- (\x2,\y2)
(\x3,\y1)
\myloop{\y1-\y2}{%
++(0,-\baselineskip) -- +(\tikzstlinewidth,0)
}%
\fi
;
\end{tikzpicture}%
\else
\settextarea
\begin{tikzpicture}[overlay,remember picture,tikzst]
\expandafter\draw\tikzstsetting
let \p1 = ([xshift=\@totalleftmargin,yshift=-.5\baselineskip]textarea.north west), \p2 = (0,0) in
\ifdim\dimexpr\y1-\y2<.5\baselineskip
(\x1,\y2) -- (\x2,\y2)
\else
let \p3 = ([xshift=\@totalleftmargin]textarea.west), \p4 = ([xshift=-\rightmargin]textarea.east) in
(\x3,\y2) -- (\x2,\y2)
(\x3,\y2)
\myloop{\y1-\y2}{%
++(0,+\baselineskip) -- +(\tikzstlinewidth,0)
}
\fi
;
\end{tikzpicture}%
\fi
\endgroup
}
% --------------------------------------------------------------
\def\myloop#1#2#3{%
#3%
\ifdim\dimexpr#1>1.1\baselineskip
#2%
\expandafter\myloop\expandafter{\the\dimexpr#1-\baselineskip\relax}{#2}%
\fi
}
\makeatother
\begin{document}
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text \tikzul[red]{text text text text \tikzst[black, ultra thick]{text text text text text
text text text text text text text text} text text text
text text text text} text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
{\tikzset{tikzul/.style={yshift=1ex}}
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida
mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna.
Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus
et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra
metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus
eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium
quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. \tikzul[line width=1.5\ht\strutbox,semitransparent,yellow]{Aenean
faucibus. Morbi dolor nulla, \tikzst[black, ultra thick]{malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue
eu, accumsan eleifend, sagittis quis}, diam. Duis eget orci sit amet orci dignissim
rutrum.}
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
test
}
\begin{quote}
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text \tikzul[red]{text text text \tikzst[black, ultra thick]{text text text text text text
text text text text text text text text text text text
text text text text text text text} text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text text text} text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
\end{quote}
{\tikzset{tikzul/.style={yshift=.5ex}}
\begin{quote}
text text text text text text text text text text text
text text text text text text text text text text text
\begin{quote}
text text text text text text text text text text text
text text \tikzul[green]{text text \tikzst[black, ultra thick]{text text text text text text text
text text text text text text text text text text text
text text text text
text text text text text text text}
text text text text text text text text text text text
text text text text text text text text text text text
text text text text} text text text text text text text
\end{quote}
text text text text text text text text text text text
text text text text text text text text text text text
\end{quote}
\large
new text text text text text text text text text text text
text text \tikzul[red]{first text text text text \tikzst[black, ultra thick]{text text text text
teXt teXt teXt teXt teXt teXt teXt teXt teXt teXt teXt
teXt teXt teXt} teXt teXt teXt teXt teXt teXt teXt teXt
teXt teXt teXt last} teXt teXt teXt teXt teXt teXt teXt
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text \tikzul[red]{text text text text text text text text text
text text\par\noindent text text text text text text text text text
text text text text} text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
}
\begin{itemize}
\item \tikzul{test test test} test
\item test \tikzul{test test test} test
\item aa \tikzul{test test test} test
\item b \tikzul{test test
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
test} test
\end{itemize}
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text \tikzul[red]{text text text text text text text text text
text text
text text text text text text text text text
text text text text} text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
text text \tikzul[red]{text text text text text text text text text
text text
\noindent text text text text text text text text text
\par text text text text} text text text text text text text
text text text text text text text text text text text
text text text text text text text text text text text
\end{document}
답변2
여러 가지 옵션이 있습니다. 아래는 모두 줄 바꿈을 지원합니다.
lua-ul
:https://tex.stackexchange.com/a/533377/250119(강조표시+밑줄에만 해당되며 사용하기 가장 간단한 솔루션, 기본적으로 작동함)- 다음을 사용한 맞춤 답변
tikz
:https://tex.stackexchange.com/a/176118/250119(임의 중첩 허용하지만 중첩된 경우 ≥ 3개의 컴파일이 필요함) soulpos
: 내 대답은 다음에서 확인하세요.https://tex.stackexchange.com/a/685471/250119(하이라이트+취소선에만 해당) -- 명령을 정의하려면 TeX 프로그래밍을 알아야 하며 이를 위해서는 2개의 컴파일이 필요합니다.soul
:https://tex.stackexchange.com/a/178701/250119(취소선+밑줄에만 해당) - 이 패키지는 본질적으로 를 사용하므로\leaders
대답은 0.1pt 너비 상자를 반복하여 작동하므로 PDF가 무거워집니다.
이러한 솔루션줄 바꿈을 지원하지 않습니다:
censor
:https://tex.stackexchange.com/a/178691/250119(취소선+밑줄에만 해당)soul
savebox 등을 사용하여:https://tex.stackexchange.com/a/418106/250119(강조표시+밑줄에만 해당)
ulem
완료를 위해 아래는 대신 사용하는 솔루션입니다 .내 대답은 정의\dwave
) - ulem
"균일한 수평" 제한은 없지만하이픈 넣기를 지원하지 않습니다어느 하나:
%! TEX program = lualatex
\documentclass{article}
\usepackage{ulem}
\makeatletter
\protected\def\ulinesout{%
\leavevmode \bgroup
\UL@setULdepth
\markoverwith {%
\rlap{\rule[.55ex]{2pt}{0.4pt}}%
\rule[-\ULdepth]{2pt}{0.4pt}% \rule[-.673ex]{2pt}{0.4pt}
}%
\ULon
}
\makeatother
\begin{document}
\uline{a}\ulinesout{b}\sout{c}
\uline{Producing a colored underline or strike-through is }\ulinesout{not supported by
regular uline}\sout{ or sout, but it is quite easy to colorize using the
markoverwith mechanism}
\end{document}
문서 에서 언급했듯이 ulem
이것은 "정말 유연한" 규칙은 아니지만 이 경우 불가능하다고 느껴지며 작은 조각을 많이 반복하여 규칙을 도출합니다.
이 단점은 위에 링크된 패키지의 솔루션과 동일합니다 soul
.