Уменьшение размера шрифта в этом mdframed и превращение его в среду многократного использования

Уменьшение размера шрифта в этом mdframed и превращение его в среду многократного использования

Я очень близок к достижению mdframedжелаемой настройки:

\documentclass[a4paper,10pt]{book}

\usepackage[paper=a4paper,twoside=true,lmargin=4cm,
rmargin=4cm,bindingoffset=0cm]{geometry}

\usepackage{mdframed}

\begin{document}

\noindent Surrounding text.

\begin{mdframed}
\begin{tabbing}
 some great \=code\\
            \>next line
\end{tabbing}
\end{mdframed}

\noindent Surrounding text.

\end{document}

Два вопроса:

  1. Как мне изменить размер шрифта в mdframedсреде \small?

  2. Как превратить это в среду многократного использования, чтобы мне не приходилось каждый раз начинать и заканчивать обе среды mdframed?tabbing

решение1

Другой подход без дополнительных пакетов — определить новую среду; в следующем примере среда myenvделает то, что вам нужно, и имеет необязательный аргумент для передачи параметров mdframed:

\documentclass[a4paper,10pt]{book}
\usepackage[framemethod=tikz]{mdframed}

\newenvironment{myenv}[1][]
  {\begin{mdframed}[font=\small,#1]\begin{tabbing}}
  {\end{tabbing}\end{mdframed}}

\begin{document}

\noindent Surrounding text.

\begin{myenv}
 some great \=code\\
            \>next line
\end{myenv}

\noindent Surrounding text.

\begin{myenv}[backgroundcolor=red!20]
 some great \=code\\
            \>next line
\end{myenv}

\end{document}

введите описание изображения здесь

решение2

Используйте \mdfsetup{font=\small}для добавления \smallк каждой mdframedсреде. Чтобы включить tabbingсреду в mdframed, вы можете использоватьxpatchпакет и его \xapptocmdмакросы \xpretocmd.

\documentclass[a4paper,10pt]{book}

\usepackage{mdframed}

\mdfsetup{font=\small}

\usepackage{xpatch}
\xapptocmd{\mdframed}{\begin{tabbing}}{}{}
\xpretocmd{\endmdframed}{\end{tabbing}}{}{}

\begin{document}

\noindent Surrounding text.

\begin{mdframed}
 some great \=code\\
            \>next line
\end{mdframed}

\noindent Surrounding text.

\end{document}

Альтернатива, которая обходится без этого, xpatch— выдавать \surroundwithmdframed{tabbing}в преамбуле и использовать tabbingокружения в теле документа. Обратите внимание, что — в отличие от вышеприведенного решения — это не позволит добавлять необязательные аргументы к отдельным окружениям.

\documentclass[a4paper,10pt]{book}

\usepackage{mdframed}

\surroundwithmdframed[font=\small]{tabbing}

\begin{document}

\noindent Surrounding text.

\begin{tabbing}
 some great \=code\\
            \>next line
\end{tabbing}

\noindent Surrounding text.

\end{document}

Вывод для обоих примеров:

введите описание изображения здесь

Связанный контент