tcolorbox: как сделать вариант mylib
Aug 16 2020
Этот вопрос :
Как воспроизвести эту коробку в tcolorbox
есть четкий ответ. Я хотел сделать аналогичный вариант с двумя небольшими изменениями:
-вместо LIB используйте ЗАМЕЧАНИЯ (хорошо, это тривиально)
-форматировать текст маркерами (перечислить среду)
\newtcbox{\myremarks}{enhanced,nobeforeafter,tcbox raise base,boxrule=0.4pt,top=0mm,bottom=0mm,
right=0mm,left=4mm,arc=1pt,boxsep=2pt,before upper={\vphantom{dlg}},
colframe=green!50!black,coltext=green!25!black,colback=green!10!white,
overlay={\begin{tcbclipinterior}\fill[green!75!blue!50!white] (frame.south west)
rectangle node[text=white,font=\sffamily\bfseries\tiny,rotate=90] {REMARKS} ([xshift=4mm]frame.north west);\end{tcbclipinterior}}}
\NewDocumentCommand\remarks{m}
{\myremarks{\begin{itemize} #1\end{itemize}}}
потерпит неудачу:
\remarks
{
\item Perfect relationships of $r=\pm1$ do not exist in the real world.
\item Correlation does not imply causation
}
не может заметить отсутствующий элемент, поэтому возникает какая-то проблема с синтаксическим анализом.
Вероятно, идеальным способом сделать это было бы напрямую изменить newtcbox, чтобы он форматировал текст в элементе itemize, но я даже не знаю, с чего начать.
Ответы
2 muzimuzhiZ Aug 17 2020 at 05:05
Попробуй это:
- Параметр
varwidth upper=\linewidth
используется (сvarwidth
загруженным пакетом), чтобы разрешить\myremarks
набор его аргументов в режиме абзаца, который требуется вitemize
среде. Это эквивалентно\myremarks{\begin{varwidth}{\linewidth} ...\end{varwidth}}
. - Поскольку повернутый текст
REMARKS
превышает минимальную высоту\myremarks
, опцияheight from=1.2cm to \maxdimen
используется для установки минимальной высоты. - Параметры узла
pos=1, anchor=south east
добавляются для прикрепления текстаREMARKS
вверху, а не по центру по вертикали. enumitem
вариантыnoitemsep, leftmargin=5mm
предназначены для регулировки пространствitemize
.
\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins}
\usepackage{enumitem}
\usepackage{varwidth}
\usepackage{xparse}
\newtcbox{\myremarks}{
enhanced,nobeforeafter,tcbox raise base,
boxrule=0.4pt,top=0mm,bottom=0mm,
right=0mm,left=4mm,arc=1pt,boxsep=2pt,
before upper={\vphantom{dlg}},
colframe=green!50!black,coltext=green!25!black,colback=green!10!white,
overlay={
\begin{tcbclipinterior}
\fill[green!75!blue!50!white]
(frame.south west) rectangle
node[text=white,font=\sffamily\bfseries\tiny,rotate=90, pos=1, anchor=south east] {REMARKS}
([xshift=4mm]frame.north west);
\end{tcbclipinterior}
},
% equivalent to surround the cmd arg in "varwidth" env
varwidth upper=\linewidth,
% set minimum height for complete output of rotated "REMARKS"
height from=1.2cm to \maxdimen,
}
\NewDocumentCommand\remarks{m}{%
\myremarks{%
\begin{itemize}[noitemsep, leftmargin=5mm]
#1%
\end{itemize}
}%
}
\begin{document}
\remarks{
\item abc
}
\remarks{
\item abc
\item def
\item ghi
}
\end{document}
