我一直在用 LaTeX 撰写我的简历(为了华丽,也为了更好地使用 LaTeX),我在使用我编写的一个名为 的宏时遇到了一些问题\nrccolstring
。
\nrccolstring
应该将两个文本字段并排放置,并占据分配给它们的所有空间。第一个小框左对齐,第二个小框右对齐。
当我的宏遍布整个页面时,它工作得很好,但是当我将它嵌套在另一个小框(例如我当前用来控制列的小框)中时,它就失效了。
当我运行附加的代码时,我得到以下输出:
那么这是什么一回事?
为什么第二个宏会失败?我收到了几个警告(如下所示),但文档编译正常。
Overfull \hbox (2.22221pt too wide) in paragraph at lines 33--34<br>
Underfull \hbox (badness 10000) in paragraph at lines 33--34
这是怎么回事?显然我不明白迷你页面的尺寸调整是如何进行的。
我是否应该使用迷你盒子以外的其他东西来达到效果?
我最初考虑过使用列或表格,但我想要一些可以自动调整单元格大小以占据整个空间\textwidth
并且还要确保单元格足够宽的东西(假设整体\textwidth
足够大以容纳所有内容)。
有什么想法吗?
\documentclass{article}
\usepackage[top=0.5in, bottom=0.5in, left=0.5in, right=0.5in]{geometry}
\usepackage{calc}
\usepackage{blindtext}
%----------------------- Registers-----------------------------%
\newlength{\registera}
\newlength{\registerb}
%-------------------- Text Field Macros-------------------------%
\newcommand{\CompanyName}{This is a Fictional Company Name}
\newcommand{\Description}{\blindtext}
%-------------------- Formatting Macros------------------------%
\newcommand{\nrccolstring}[2]{
\begingroup
\setlength{\registera}{\widthof{\noindent \raggedright #1}}%
\setlength{\registerb}{\dimexpr \textwidth - \registera \relax}%
\noindent \begin{minipage}[t]{\registera}
\noindent \raggedright #1\\
\end{minipage}
\noindent \begin{minipage}[t]{\registerb}
\noindent \raggedleft #2\\
\end{minipage}
\endgroup}
%------------------------ Body Text ---------------------------%
\begin{document}
\blindtext
\par \bigskip
\par\nrccolstring{\textbf{\CompanyName}}{2011-Present} % Macro works here!
\par
\Description
\par \bigskip
\noindent \begin{minipage}[t]{0.5\textwidth}
\par\nrccolstring{\textbf{\CompanyName}}{2011-Present} % Macro doesn't work here!
\par
\Description
\end{minipage}
\noindent \begin{minipage}[t]{0.5\textwidth}
\Description
\end{minipage}
\end{document}
答案1
这是您当前文档的更新版本:
\documentclass{article}
\usepackage[top=0.5in, bottom=0.5in, left=0.5in, right=0.5in]{geometry}% http://ctan.org/pkg/geometry
\usepackage{calc,blindtext}% http://ctan.org/pkg/{calc,blindtext}
%----------------------- Registers-----------------------------%
\newlength{\registera}
\newlength{\registerb}
%-------------------- Text Field Macros-------------------------%
\newcommand{\CompanyName}{This is a Fictional Company Name}
\newcommand{\Description}{\blindtext}
%-------------------- Formatting Macros------------------------%
\newcommand{\nrccolstring}[2]{%
\begingroup
\setlength{\registera}{\widthof{#1}}%
\setlength{\registerb}{\dimexpr \linewidth - \registera \relax}%
\noindent\begin{minipage}[t]{\registera}
\raggedright #1
\end{minipage}%
\begin{minipage}[t]{\registerb}
\raggedleft #2
\end{minipage}%
\endgroup}
%------------------------ Body Text ---------------------------%
\begin{document}
\blindtext\par
\bigskip
\nrccolstring{\textbf{\CompanyName}}{2011-Present} % Macro works here!
\par
\Description\par
\bigskip
\noindent \begin{minipage}[t]{\dimexpr0.5\textwidth-0.5\columnsep}
\nrccolstring{\textbf{\CompanyName}}{2011-Present} % Macro doesn't work here!
\par\Description
\end{minipage}\hfill%
\begin{minipage}[t]{\dimexpr0.5\textwidth-0.5\columnsep}
\Description
\end{minipage}
\end{document}
最显著的变化包括:
- 用于
%
删除虚假空格;LaTeX 会忽略空格数学模式,但不在文本模式下。它确实会忽略连续空格,但单个空格仍然可见/设置。请参阅%
行末百分号 ( ) 有什么用? - 使用
\linewidth
而不是\textwidth
。这样可以在不超出框边界的情况下设置\nrccolstring
内部。minipage
- 删除
\\
段落末尾的内容。