我尝试使用\hspace
对齐mdframed
框内的文本。但是,似乎在框内\hspace
不起作用。框内的文本不知何故与中心对齐。为什么这里不起作用?mdframed
mdframed
\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}