对于定理和类似问题,我使用mdframed
包。到目前为止,我使用在 SE 上收集的解决方案:
\documentclass[twoside]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{showframe}
\usepackage{lipsum}
\usepackage[framemethod=tikz]{mdframed}
\mdfdefinestyle{box}{% common style
topline=false, bottomline=false,
rightline=false,
linewidth=2pt,
backgroundcolor=none,
apptotikzsetting={\tikzset{mdfbackground/.append style={%
fill=teal!40, fill opacity=0.25}}},
frametitlefont=\sffamily\bfseries\color{black},
splittopskip=1mm,
frametitlebelowskip=0mm,
}
% Example
\mdtheorem[style=box,linecolor=teal!70
]{example}{Example}[chapter]%section
\begin{document}
\chapter{Test}
\lipsum[2]
\begin{example}[cross correlation]
\lipsum[2]
\end{example}
\newpage
\lipsum[1-2]
\begin{example}[cross correlation]
\lipsum[2]
\end{example}
\end{document}
这使:
现在我想定义 mdframed(不可破坏)框,它会知道它是在奇数页还是偶数页,例如,左线将始终位于页面的外侧。到目前为止,我尝试了以下方法:
定义
\mdfdefinestyle{box-L}{... rightline=false, ...}
和\mdfdefinestyle{box-R}{... leftline=false ...}
example
根据是在奇数页还是偶数页选择其中一个框
我尝试使用以下代码来完成这封信:
\mdtheorem[%
\label{example:\thechapter.\theexample},
\ifodd\pageref{example:\thechapter.\theexample}
style=box-L
\else
style=box-R
\fi,
linecolor=teal!70
]{example}{Example}[chapter]%section
不幸的是,我的这个(幼稚的)方法不起作用。我收到错误:
Use of \\mdframed doesn't mathch its definition.
有没有什么办法可以实现我的愿望呢?
答案1
也许settings=...
钥匙可以帮到这里。
rightline
和leftline
是触发mdf@rightline
和mdf@leftline
bool 变量的键。使用
settings={\ifodd\value{page}\booltrue{mdf@leftline}\boolfalse{mdf@rightline}\else\boolfalse{mdf@leftline}\booltrue{mdf@rightline}\fi}
应提供相关的“映射”。settings
代码在开始时作为钩子执行mdframed
。
\documentclass[twoside]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{showframe}
\usepackage{lipsum}
\usepackage[framemethod=tikz]{mdframed}
\makeatletter
\mdfdefinestyle{box}{% common style
topline=false, bottomline=false,
rightline=false,
linewidth=2pt,
backgroundcolor=none,
settings={\ifodd\value{page}\booltrue{mdf@leftline}\boolfalse{mdf@rightline}\else\boolfalse{mdf@leftline}\booltrue{mdf@rightline}\fi},
apptotikzsetting={\tikzset{mdfbackground/.append style={%
fill=teal!40, fill opacity=0.25}}},
frametitlefont=\sffamily\bfseries\color{black},
splittopskip=1mm,
frametitlebelowskip=0mm,
}
\makeatother
% Example
\mdtheorem[style=box,linecolor=teal!70
]{example}{Example}[chapter]%section
\begin{document}
\chapter{Test}
\lipsum[2]
\begin{example}[cross correlation]
\lipsum[2]
\end{example}
\newpage
\lipsum[1-2]
\begin{example}[cross correlation]
\lipsum[2]
\end{example}
\end{document}