定义以下环境:\divisorule\begin{flushleft}\end{flushleft}\divisorule

定义以下环境:\divisorule\begin{flushleft}\end{flushleft}\divisorule

每当我需要解释一些别人可能不清楚的事情时,我通常会把它写成简短的文字,以便于理解

 \noindent\hrulefill~\raisebox{-4pt}[10pt][10pt]{*any symbol like maltese crux*}~\hrulefill
 \begin{flushleft}
 \leftskip=0.5cm
 \rightskip=0.5cm
 \parindent=0.25cm
 *Any text*
\end{flushleft}
\noindent\hrulefill~\raisebox{-4pt}[10pt][10pt]{*any symbol like maltese crux*}~\hrulefill

因此,为了遵循,我尝试定义一个新的环境以供遵循。

\documentclass[10pt]{report} 

\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{skak}
\usepackage{bbding}

\newcommand{\paperside}[1]{
    \setlength{\leftskip}{#1}
    \setlength{\rightskip}{#1}
}

\newcommand{\normalindent}{\parindent=0.25cm}

\newcommand{\divisorule}[1]{\noindent\hrulefill~\raisebox{-4pt}[10pt][10pt]{#1}~\hrulefill}

\newenvironment{explanation}[1][0cm]{
    \begin{flushleft}
        \paperside{#1}
        \normalindent
    }
    {
    \end{flushleft}
}

\newcommand{\varflushleft}[3]{
    \begin{explanation}[#2]
        \divisorule{#1}\\
        \noindent
        \textmd{
            \normalindent 
            #3}\,\\
        \divisorule{#1}
    \end{explanation}
    }


\begin{document}
    \lipsum[1][1-7]
    
    \varflushleft{\king}{0.5cm}{
        START EXPLANATION 1\\
        \lipsum[1][7-9]\\
        %
        \varflushleft{\queen}{1cm}{
            START EXPLANATION 2\\
            \lipsum[2]\\            
            END EXPLANATION 2
        }
        %
        \lipsum[1][9-10]\\
        END EXPLANATION 1
    }
        
    \lipsum[2][1-5]
\end{document}

因此,我发现的解决方案肯定不是最好的,因为我并没有真正定义新的环境,所以为了转到文本中的新行,我总是必须添加两个斜线:因此,我想在这里提出一个问题,以便我能够理解如何实际定义一个具有 \varflushleft 样式的环境,我很难定义它,因为在关闭新环境时不可能使用变量。有人能帮帮我吗?

注意:

我指出我想将除数规则放在 flushleft 之外但我无法做到这一点。

答案1

这符合你的期望吗?

\documentclass[10pt]{report} 

\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{skak}
\usepackage{bbding}

\makeatletter
\newcommand{\paperside}[1]{%
  \setlength{\leftskip}{#1}%
  \setlength{\rightskip}{\glueexpr #1+\@flushglue\relax}%
}
\makeatother

\newlength{\normalparindent}
\AtBeginDocument{\setlength{\normalparindent}{\parindent}}
\newcommand{\normalindent}{\setlength{\parindent}{\normalparindent}}

\newif\ifnestedexplanation

\newcommand{\divisorule}[1]{%
  \noindent\hrulefill~\raisebox{-4pt}[10pt][10pt]{#1}~\hrulefill
}

\NewDocumentEnvironment{explanation}{mO{0cm}}{%
  \par
  \nestedexplanationtrue
  \raggedright
  \paperside{#2}%
  \normalindent
  \divisorule{#1}\par\nopagebreak
}{
  \par\nopagebreak
  \divisorule{#1}\par
}
\AddToHook{env/explanation/after}{%
  \ifnestedexplanation\else\addvspace{\topsep}\fi
}
\AddToHook{env/explanation/before}{%
  \par\ifnestedexplanation\else\addvspace{\topsep}\fi
}

\begin{document}

\lipsum[1][1-7]
    
\begin{explanation}{\king}[0.5cm]
  \lipsum[1][7-9]

  \begin{explanation}{\queen}[1cm]
    \lipsum[2]          
  \end{explanation}

  \lipsum[1][9-10]
\end{explanation}
        
\lipsum[2][1-5]

\end{document}

在此处输入图片描述

在外部说明之前和之后添加了一些垂直空间,但嵌套说明周围没有。这些\nopagebreak命令确保在起始装饰之后或结束装饰之前不会发生分页。

第一个解释段落和理由无需缩进。此外,装饰也是可选的,但边距量必须以不同的方式指定。

\documentclass[10pt]{report} 

\usepackage{amssymb}
\usepackage{lipsum}
\usepackage{skak}
\usepackage{bbding}

\makeatletter
\newcommand{\paperside}[1]{%
  \setlength{\leftskip}{#1}%
  \setlength{\rightskip}{#1}%
}

\newlength{\normalparindent}
\AtBeginDocument{\setlength{\normalparindent}{\parindent}}
\newcommand{\normalindent}{\setlength{\parindent}{\normalparindent}}

\newif\ifnestedexplanation

\newcommand{\divisorule}[1]{%
  \noindent\hrulefill~\raisebox{-0.7ex}[10pt][10pt]{#1}~\hrulefill
}

\NewDocumentEnvironment{explanation}{O{\maltese}D<>{0cm}}{%
  \par
  \nestedexplanationtrue
  \paperside{#2}%
  \divisorule{#1}\par\@afterheading\@afterindentfalse
}{
  \par\nopagebreak
  \divisorule{#1}\par
}
\AddToHook{env/explanation/after}{%
  \ifnestedexplanation\else\addvspace{\topsep}\fi
}
\AddToHook{env/explanation/before}{%
  \par\ifnestedexplanation\else\addvspace{\topsep}\fi
}
\makeatother

\begin{document}

\lipsum[1][1-7]
    
\begin{explanation}[\king]<1cm>
  \lipsum[1][7-9]

  \begin{explanation}<2cm>
    \lipsum[2][1-3]

    \lipsum[2][4-6]
  \end{explanation}

  \lipsum[1][9-10]
\end{explanation}
        
\lipsum[2][1-5]

\end{document}

在此处输入图片描述

相关内容