私は演習と訂正を含む文書を作成しています。学生が誤って読んで演習が台無しにならないように、訂正を簡単にマークできるようにしたいと考えています。そのための環境を作成しましたが、問題は複数のページに分割できないことです :/
\newenvironment{solution}%
{\par\rule{1ex}{1ex}
\hspace{\stretch{1}}
\textbf{Solution}
\hspace{\stretch{1}}
\rule{1ex}{1ex}\par%
\hspace{2ex}% indent everything by 2ex
%\begin{myindentpar}{7ex}
%\quote \quote
\begin{minipage}{0.95\linewidth}% stop just before the right squares
\begin{framed}}% put a black frame
%\addtolength{\leftskip}{4cm}
%\begin{adjustwidth}{6cm}{}
%\begin{longtable}{|p{1.1\linewidth}|}
%\hline}
{\end{framed}\end{minipage}
%{\\\hline\end{longtable}
%\end{adjustwidth}
%\end{myindentpar}
%\endquote \endquote
\par
\rule{1ex}{1ex}\hspace{\stretch{1}}
\hspace{\stretch{1}}\rule{1ex}{1ex}\par}
皆さんの参考になればと思い、私のコメント付きの試みをわざと残しておきました。
デザインを少し変える解決策が見つかったら、私はまだとても興味があります :)
答え1
コードの問題は、mdframed
を で囲みminipage
、minipage
ではページ区切りが認められないことです。 私の推測では、 はminipage
フレームの角にある小さな四角形を見つけるために使用したと思いますが、これは必須ではなく、 、 、 を使用して、環境内でページ区切りの可能性を損なうことなくそれらを見つけることができsingleextra
ますfirstextra
。
2 つのスタイルを定義した小さな例: 1 つ目は正方形なし、2 つ目は正方形を使用 (使用したい正確な長さはわかりませんでしたが、必要な調整は簡単に行うことができます):
\documentclass{article}
\usepackage[a5paper]{geometry}% just for the example
\usepackage[framemethod=tikz]{mdframed}
\usepackage{tikzpagenodes}
\usepackage{lipsum}% just to generate text for the example
\usetikzlibrary{calc}
\mdfdefinestyle{mystyle}{%
leftmargin=2ex,
innertopmargin=2\baselineskip,
skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
skipbelow={\dimexpr0.5\baselineskip+\topskip\relax},
firstextra={%
\path let \p1=(P), \p2=(O)
in node[font=\bfseries] at ([yshift=-2ex]0.5*\x1-\x2,\y1) {Solution};
}
}
\mdfdefinestyle{mysquare}{%
leftmargin=0pt,
rightmargin={\dimexpr4pt+2ex\relax},
innertopmargin=2\baselineskip,
skipabove={\dimexpr0.5\baselineskip+\topskip\relax},
skipbelow={\dimexpr0.5\baselineskip+\topskip\relax},
singleextra={%
\path let \p1=(P), \p2=(O)
in node[font=\bfseries] at ([yshift=-2ex]0.5*\x1-\x2,\y1) {Solution};
\fill[black] ([xshift=2pt,yshift=2pt]P) rectangle ++(1ex,1ex);
\fill[black] ([xshift=-2pt,yshift=-2pt]O) rectangle ++(-1ex,-1ex);
\fill[black] ([xshift=-2pt,yshift=2pt]O|-P) rectangle ++(-1ex,1ex);
\fill[black] ([xshift=2pt,yshift=-2pt]O-|P) rectangle ++(1ex,-1ex);
},
firstextra={%
\path let \p1=(P), \p2=(O)
in node[font=\bfseries] at ([yshift=-2ex]0.5*\x1-\x2,\y1) {Solution};
\fill[fill=black] ([xshift=2pt,yshift=2pt]P) rectangle ++(1ex,1ex);
\fill[black] ([xshift=-2pt,yshift=2pt]O|-P) rectangle ++(-1ex,1ex);
},
secondextra={%
\fill[fill=black] ([xshift=2pt,yshift=-2pt]O-|P) rectangle ++(1ex,-1ex);
\fill[black] ([xshift=-2pt,yshift=-2pt]O) rectangle ++(-1ex,-1ex);
}
}
\newmdenv[style=mystyle]{solution}
\newmdenv[style=mysquare]{ssolution}
\begin{document}
\lipsum[1]
\begin{solution}
\lipsum[2-3]
\end{solution}
\lipsum[2]
\begin{ssolution}
\lipsum[1-2]
\end{ssolution}
\lipsum[2]
\end{document}