hspace 在 mdframed 中不起作用

hspace 在 mdframed 中不起作用

我尝试使用\hspace对齐mdframed框内的文本。但是,似乎在框内\hspace不起作用。框内的文本不知何故与中心对齐。为什么这里不起作用?mdframedmdframed\hspace

\usepackage[framemethod=TikZ]{mdframed}
\usetikzlibrary{shadows}
\newmdenv[shadow=true,shadowcolor=black,font=\sffamily, align=right, leftmargin=10pt]{shadowbox}


\begin{shadowbox}
\hspace{2cm} 90   \hspace{1cm}  [NOP]   \newline
\hspace{2cm} 8bff \hspace{1cm}  [MOV EDI, EDI] (FUNCTION ENTRY) \newline
\hspace{2cm} 90   \hspace{1cm}  [NOP]   \newline
\hspace{2cm} 90   \hspace{1cm}  [NOP] \newline
\hspace{2cm} 90   \hspace{1cm}  [NOP] \newline
\hspace{2cm} 90   \hspace{1cm}  [NOP] \newline
\hspace{2cm} 8bff \hspace{1cm}  [MOV EDI, EDI] (FUNCTION ENTRY) \newline
\hspace{2cm} 55   \hspace{1cm}  [PUSH EBP] \newline
\hspace{2cm} 8bec \hspace{1cm} [MOV EBP, ESP] \newline
\end{shadowbox}

以下是我现在得到的结果:

在此处输入图片描述

答案1

\newline空格后的内容\hspace会被忽略;您可以强制使用空格\hpsace*代替。尝试以下小示例,看看会发生什么:

\noindent
Text\newline
\hspace{2cm}text\newline
\hspace*{2cm}text.

示例输出

但是,您可能需要一个tabbing环境,否则列将不会对齐。将下面的第一个示例与tabbing第二个示例进行比较,这是您修改后的输入将给出的结果:

示例输出

\documentclass{article}

\usepackage[framemethod=TikZ]{mdframed}
\usetikzlibrary{shadows}
\newmdenv[shadow=true,shadowcolor=black,font=\sffamily, align=right,
  leftmargin=10pt]{shadowbox}

\begin{document}

\begin{shadowbox}
  \begin{tabbing}
    \hspace{2cm} \= 90   \hspace{1cm} \= [NOP] \\
    \> 8bff \>  [MOV EDI, EDI] (FUNCTION ENTRY) \\
    \> 90   \>  [NOP]   \\
    \> 90   \>  [NOP] \\
    \> 90   \>  [NOP] \\
    \> 90   \>  [NOP] \\
    \> 8bff \>  [MOV EDI, EDI] (FUNCTION ENTRY) \\
    \> 55   \>  [PUSH EBP] \\
    \> 8bec \> [MOV EBP, ESP] \\
  \end{tabbing}
\end{shadowbox}

\begin{shadowbox}
\hspace*{2cm} 90   \hspace{1cm}  [NOP]   \newline
\hspace*{2cm} 8bff \hspace{1cm}  [MOV EDI, EDI] (FUNCTION ENTRY) \newline
\hspace*{2cm} 90   \hspace{1cm}  [NOP]   \newline
\hspace*{2cm} 90   \hspace{1cm}  [NOP] \newline
\hspace*{2cm} 90   \hspace{1cm}  [NOP] \newline
\hspace*{2cm} 90   \hspace{1cm}  [NOP] \newline
\hspace*{2cm} 8bff \hspace{1cm}  [MOV EDI, EDI] (FUNCTION ENTRY) \newline
\hspace*{2cm} 55   \hspace{1cm}  [PUSH EBP] \newline
\hspace*{2cm} 8bec \hspace{1cm} [MOV EBP, ESP] \newline
\end{shadowbox}

\end{document}

第一行tabbing提供了一个模板,其中\=设置了制表位。后续行\>移动到下一个制表位。

答案2

或者使用 tabularx:

\documentclass{article}

\usepackage{tabularx}
\usepackage[framemethod=TikZ]{mdframed}
\usetikzlibrary{shadows}
\newmdenv[shadow=true,shadowcolor=black,font=\sffamily, 
          align=right, leftmargin=10pt]{shadowbox}

\usepackage[active,tightpage]{preview}
\PreviewEnvironment{shadowbox}% <-- just for showing only the shadowbox
    \setlength\PreviewBorder{1em}


    \begin{document}
\begin{shadowbox}
    \begin{tabularx}{\hsize}{>{\setlength\hsize{0.5\hsize}\qquad}XXX}
90   &  [NOP]           &                       \\
8bff &  [MOV EDI, EDI]  &   (FUNCTION ENTRY)    \\
90   &  [NOP]           &                       \\
90   &  [NOP]           &                       \\
90   &  [NOP]           &                       \\
90   &  [NOP]           &                       \\
8bff &  [MOV EDI, EDI]  &   (FUNCTION ENTRY)    \\
55   &  [PUSH EBP]      &                       \\
8bec &  [MOV EBP, ESP]  &
    \end{tabularx}
\end{shadowbox}
    \end{document}

在此处输入图片描述

相关内容