mdframed 또는 tcolorbox *없이* 텍스트 배경색 설정

mdframed 또는 tcolorbox *없이* 텍스트 배경색 설정

tufte-*이는 알려진 문제 \sidenote이며 환경이나 \marginnote내부에서 사용되는 경우 빌드되지 않습니다 . 이에 대한 해결 방법을 찾을 수 없으며 해당 주제에 대한 대부분의 게시물에서는 해결 방법이 없다고 제안합니다.mdframedtcolorbox

내가 원하는 것은 단순히 tufte-handout. 이게 가능할까없이 mdframed또는 tcolorbox?

편집 : 최소한의 예

\documentclass[nobib,justified]{tufte-handout}

\usepackage{mdframed}

\newmdenv[
  linecolor=lightgray,
  linewidth=3pt,
  leftmargin=0pt,
  innerleftmargin=0pt,
  rightmargin=0pt,
  innerrightmargin=0pt
]{graybox}

\usepackage{lipsum}

\begin{document}

\begin{graybox}
\lipsum[1]
\marginnote{This is a marginnote}
\end{graybox}

\end{document}

다음을 사용하여 빌드하지 못했습니다.! LaTeX Error: Float(s) lost.

답변1

여기에 있을 수 있는 약간의 어리석은 해킹이 있습니다.많이버그가 있지만 페이지 나누기에서 벗어난 짧은 단락에서는 작동하는 것 같습니다.

\documentclass{tufte-handout}
\usepackage{tcolorbox}
\usepackage{blindtext}

\usepackage{environ}

\makeatletter
\NewEnviron{grayground}{%
    \noindent\smash{\begin{tcolorbox}[colback=gray!20, colframe=gray!20, oversize, top=0pt, bottom=0pt, left=4pt, right=4pt, box align=top]
    \let\sidenote\@gobble
    \let\marginnote\@gobble
    \color{gray!20}\BODY
    \end{tcolorbox}}\par\BODY}
\makeatother

\begin{document}

\begin{grayground}
\blindtext\sidenote{\blindtext}\blindtext
\end{grayground}

\end{document}

설명

기본 아이디어는 먼저 를 사용하여 텍스트를 한 번 인쇄하고 배경과 동일한 색상의 텍스트를 사용하여 또는 tcolorbox을 억제하여 숨기는 것입니다.sidenotemarginnote

그런 다음 우리는진짜활성 사이드노트와 여백 노트가 그 위에 있는 텍스트입니다.

이제 나는 옆주 위 첨자가 있는 버전과 없는 버전의 측정이 매우 비슷할 것으로 기대하고 있습니다. 따라서 두 텍스트가 정확히 동일하지는 않지만 대략 동일한 양의 수직 공간을 차지해야 하며 따라서 다음을 얻을 수 있습니다. 이것으로 끝내십시오.

tcolorbox이를 구현하려면 a를 사용하여 첫 번째 인쇄 작업을 수행 하면 됩니다 . 그런 다음 그것을 부수십시오.

내부에서는 tcolorboxlet marginnotesidenoteto @gobble기능을 억제할 수 있습니다. 동일한 텍스트를 다시 인쇄하여 완료합니다.

더 쉽게 사용할 수 있도록 Environ 내부에 모든 것을 래핑할 수 있습니다.

출력은 다음과 같습니다(이미지가 약간 오래되었습니다. 좀 더 적합하도록 코드를 일부 조정했습니다).

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

관련 정보