tcolorboxで最初の行だけをインデントする方法

tcolorboxで最初の行だけをインデントする方法

最初の行だけをインデントするにはどうすればいいですかtcolorbox?

\documentclass[12pt,a4paper]{book}
\usepackage[listings,many]{tcolorbox}
\usetikzlibrary{calc}
\usepackage{lipsum}

\tcbuselibrary{listingsutf8,breakable,skins}
\tcbset{listing engine=listings}
\tcbset{mystyle/.style={
  breakable,
  enhanced,
  rightrule=0pt,
  toprule=0pt,
  outer arc=0pt,
  before upper={\parindent17pt},
parbox = true,
  arc=0pt,
  colback=white,
  attach boxed title to top left,
  fonttitle=\sffamily
  }
}
\newtcolorbox[auto counter]{mybox}[1][]{
  mystyle,colframe=black,boxed title style={
    colback=black,
    outer arc=0pt,
    arc=0pt,
    top=0pt,
    bottom=0pt,
left=1pt,
right=1pt
    },
left=0pt,right=0pt,top=-18pt,bottom=0pt, 
  title=\thetcbcounter,
  overlay unbroken and first={
      \path
        let
        \p1=(title.north west),
        \p2=(frame.north west)
        in
        node[anchor=west,font=\sffamily,text width=\x2-\x1]
        at (title.west) {#1};
  }
}
\begin{document}


\begin{mybox}
\lipsum[1-8]
\end{mybox}

\end{document}

ここに画像の説明を入力してください

答え1

\parindentを に設定しました17ptが、これは番号付きタイトル ボックス用のスペースを確保するためだけに使用します。したがって、\parindent=0pt最初の段落に と手動インデントが必要です。

これを実現するには、次の方法を使用します。

before upper={\setlength{\parindent}{0pt}\hspace*{17pt}}

完全な例は次のとおりです。

\documentclass[12pt,a4paper]{book}
\usepackage[listings,many]{tcolorbox}
\usetikzlibrary{calc}
\usepackage{lipsum}

\tcbuselibrary{listingsutf8,breakable,skins}
\tcbset{listing engine=listings}
\tcbset{mystyle/.style={
  breakable,
  enhanced,
  rightrule=0pt,
  toprule=0pt,
  outer arc=0pt,
  before upper={\setlength{\parindent}{0pt}\hspace*{17pt}},
parbox = true,
  arc=0pt,
  colback=white,
  attach boxed title to top left,
  fonttitle=\sffamily
  }
}
\newtcolorbox[auto counter]{mybox}[1][]{
  mystyle,colframe=black,boxed title style={
    colback=black,
    outer arc=0pt,
    arc=0pt,
    top=0pt,
    bottom=0pt,
left=1pt,
right=1pt
    },
left=0pt,right=0pt,top=-18pt,bottom=0pt, 
  title=\thetcbcounter,
  overlay unbroken and first={
      \path
        let
        \p1=(title.north west),
        \p2=(frame.north west)
        in
        node[anchor=west,font=\sffamily,text width=\x2-\x1]
        at (title.west) {#1};
  }
}
\begin{document}


\begin{mybox}
\lipsum[1-2]
\end{mybox}

\end{document}

コードの出力

関連情報