tcolorbox: cara membuat varian mylib

Aug 16 2020

Pertanyaan ini :

Bagaimana mereproduksi kotak ini di tcolorbox

punya jawaban yang jelas. Saya ingin membuat varian yang mirip dengan dua perubahan kecil:

-bukan LIB, gunakan KOMENTAR (ok, itu sepele)

-format teks dalam peluru (lingkungan perincian)

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

akan gagal dalam hal ini:

\remarks
{
\item Perfect relationships of $r=\pm1$ do not exist in the real world.
\item Correlation does not imply causation
}

gagal mencatat item yang hilang, jadi ada beberapa masalah penguraian yang terjadi.

Kemungkinan cara ideal untuk melakukan ini adalah memodifikasi newtcbox secara langsung sehingga memformat teks dalam itemize, tetapi saya bahkan tidak tahu harus mulai dari mana.

Jawaban

2 muzimuzhiZ Aug 17 2020 at 05:05

Coba ini:

  • Opsi varwidth upper=\linewidthdigunakan (dengan varwidthpemuatan paket) untuk memungkinkan \myremarksmengeset argumennya dalam mode paragraf, yang diperlukan oleh itemizelingkungan. Ini sama dengan \myremarks{\begin{varwidth}{\linewidth} ...\end{varwidth}}.
  • Karena teks yang diputar REMARKSlebih tinggi dari tinggi minimal \myremarks, opsi height from=1.2cm to \maxdimendigunakan untuk mengatur tinggi minimum.
  • Opsi node pos=1, anchor=south eastditambahkan untuk melampirkan teks REMARKSke atas, bukan di tengah vertikal.
  • enumitemopsi noitemsep, leftmargin=5mmuntuk menyesuaikan spasi 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}