我正在编辑一份文档,为 LaTeX 添加正确的标签和语法。我遇到了边距“问题”。或者说,环境对边距的反应不同,导致它们看起来不井然有序且不一致。这不是致命错误,但美观的文档与内容同样重要。
我现在有两个选择。
这第一设置边距,使内容居中(如往常一样),而列表项等则超出文档内容。如下所示:
这第二个相反,将所有内容都放在文档内容行内,严格位于边距内。列表项向右对齐,以便为列表提供更好的形状(当前
enumerate
和itemize
环境已经这样做了):
我的问题是:考虑到目前的标准,哪种解决方案最好?哪种更容易实现?如何正确执行此操作(换句话说:是否有包、什么语法等)?
答案1
获得所需内容的一种方法是使用包含最宽条目的参数来定义环境:
\newlength{\xdescwd}
\newenvironment{xdesc}[1]
{\settowidth{\xdescwd}{\textbf{#1:}}%
\begin{description}[leftmargin=\dimexpr\xdescwd+.5em\relax,
labelindent=0pt,labelsep=.5em,
labelwidth=\xdescwd,align=right]}
{\end{description}}
这是完整的例子
\documentclass[12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[shortlabels]{enumitem}
\usepackage{graphicx}
\usepackage{pifont}
\usepackage{titlesec}
\usepackage[spanish]{babel}
\newlength{\xdescwd}
\newenvironment{xdesc}[1]
{\settowidth{\xdescwd}{\textbf{#1:}}%
\begin{description}[leftmargin=\dimexpr\xdescwd+.5em\relax,
labelindent=0pt,labelsep=.5em,
labelwidth=\xdescwd,align=right]}
{\end{description}}
\setlist[enumerate]{itemsep=-1mm}
\setlist[itemize]{itemsep=-1mm}
\begin{document}
En un contexto determinado, las palabras poseen, además de su significado literal, también una dimensión intencional. Un texto es la manifestación lingüística de la intención del emisor dirigida a un receptor. Si consideramos, pues, los actos ilocutivos implicados, un texto cumplirá funciones diferentes.
La función textual es el efecto de los textos en una situación comunicativa según los objetivos que queremos alcanzar. Un texto puede desempeñar las siguientes funciones:
\begin{xdesc}{Representativa}% argument is the widest label
\item[Representativa:] llamada también asertiva, cuando se afirma o se anuncia algo que se considera verdadero.
\item[Informativa:] cuando se presenta algo de manera neutra, sin énfasis que pueda denotar emotividad, como por ejemplo un titular de una noticia.
\item[Prescriptiva:] cuando se establecen normas. En la legislación, por ejemplo, se emplean formas modales deónticas (deber + infinitivo) para expresar una orden.
\item[Persuasiva:] cuando se trata de convencer al interlocutor
\item[Comisiva:] cuando se promete, jura, ofrece, etc.
\item[Fática:] cuando el emisor se centra en el interlocutor y procura mantener el contacto con él, como por ejemplo “Oye…”
\item[Expresiva:] cuando el emisor se alegra, agradece, felicita.
\end{xdesc}
\end{document}
采用两遍方法可以避免猜测最宽的标签:
\documentclass[12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[shortlabels]{enumitem}
\usepackage[spanish]{babel}
\newlength{\xdescwd}
\usepackage{environ}
\makeatletter
\NewEnviron{xdesc}{%
\setbox0=\vbox{\hbadness=\@M \global\xdescwd=0pt
\def\item[##1]{%
\settowidth\@tempdima{\textbf{##1}:}%
\ifdim\@tempdima>\xdescwd \global\xdescwd=\@tempdima\fi}
\BODY}
\begin{description}[leftmargin=\dimexpr\xdescwd+.5em\relax,
labelindent=0pt,labelsep=.5em,
labelwidth=\xdescwd,align=left]\BODY\end{description}}
\makeatother
\begin{document}
En un contexto determinado, las palabras poseen, además de su significado literal, también una dimensión intencional. Un texto es la manifestación lingüística de la intención del emisor dirigida a un receptor. Si consideramos, pues, los actos ilocutivos implicados, un texto cumplirá funciones diferentes.
La función textual es el efecto de los textos en una situación comunicativa según los objetivos que queremos alcanzar. Un texto puede desempeñar las siguientes funciones:
\begin{xdesc}
\item[Representativa:] llamada también asertiva, cuando se afirma o se anuncia algo que se considera verdadero.
\item[Informativa:] cuando se presenta algo de manera neutra, sin énfasis que pueda denotar emotividad, como por ejemplo un titular de una noticia.
\item[Prescriptiva:] cuando se establecen normas. En la legislación, por ejemplo, se emplean formas modales deónticas (deber + infinitivo) para expresar una orden.
\item[Persuasiva:] cuando se trata de convencer al interlocutor
\item[Comisiva:] cuando se promete, jura, ofrece, etc.
\item[Fática:] cuando el emisor se centra en el interlocutor y procura mantener el contacto con él, como por ejemplo “Oye…”
\item[Expresiva:] cuando el emisor se alegra, agradece, felicita.
\end{xdesc}
\end{document}
这实际上需要对环境进行两次排版:一次用于收集标签宽度,第二次用于真正的排版。
答案2
大概你是在为别人编辑。
有没有出版商参与?出版商有自己喜欢的风格吗?这是首先要考虑的。
如果那里没有指导,请查看“项目标签”。它们相对于边距有多宽?太靠近外边缘(可能会切断某些东西)或装订(可能会遮挡某些东西)都不是好主意。如果它们真的很宽,是否可以将它们设置在多行上(注意对齐顶部基线),如果标签所需的行数大于文本中的行数,您该怎么办?
如果您考虑在主文本块中设置所有内容,那么您仍然需要考虑标签的宽度,因为您的操作将影响文本可用区域的宽度。同样,对于宽标签,您是否考虑多行方法(至于边距情况)或者您只是决定文本的合适宽度,并且,如果任何标签比可用空间宽,让它侵占文本区域,并在新行上开始实际文本?
这是非常主观的,我首先会寻找工作中的“最坏情况”。 (可能会有几种“最坏情况” - 绝对最宽的标签;带有短文本的宽标签;标签刚好足够宽,可以决定在标签和文本之间留出多少空间。)如果您可以成功处理这些问题,其余的问题应该相对简单。
有一件事我会不过,建议的是(正如您所指出的),在整个工作过程中采用统一的方法将产生比被视为随机的结果更专业的结果。
答案3
我决定选择第二种方案。理由是(1)边距太窄,无法容纳长标签,并且(2)第一个选项看上去不太好看。
使用第二种解决方案egreg 的回答, 然后Marco Daniel 的回答中提出了这个方案加上这一页,在不忘记进行一些调整的情况下,我想出了一个解决方案:
\documentclass[12pt]{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[shortlabels]{enumitem}
\usepackage{graphicx}
\usepackage{pifont}
\usepackage{titlesec}
\newenvironment{xdesc}[0]
{\begin{description}[leftmargin=4cm,
labelindent=0pt,labelsep=1cm,
labelwidth=3cm,align=right]}
{\end{description}}
\setlist[enumerate]{itemsep=-1mm}
\setlist[itemize]{itemsep=-1mm}
\begin{document}
En un contexto determinado, las palabras poseen, además de su significado literal, también una dimensión intencional. Un texto es la manifestación lingüística de la intención del emisor dirigida a un receptor. Si consideramos, pues, los actos ilocutivos implicados, un texto cumplirá funciones diferentes.
La función textual es el efecto de los textos en una situación comunicativa según los objetivos que queremos alcanzar. Un texto puede desempeñar las siguientes funciones:
\begin{xdesc}
\item[Representativa:] llamada también asertiva, cuando se afirma o se anuncia algo que se considera verdadero.
\item[Informativa:] cuando se presenta algo de manera neutra, sin énfasis que pueda denotar emotividad, como por ejemplo un titular de una noticia.
\item[Prescriptiva:] cuando se establecen normas. En la legislación, por ejemplo, se emplean formas modales deónticas (deber + infinitivo) para expresar una orden.
\item[Persuasiva:] cuando se trata de convencer al interlocutor
\item[Comisiva:] cuando se promete, jura, ofrece, etc.
\item[Fática:] cuando el emisor se centra en el interlocutor y procura mantener el contacto con él, como por ejemplo “Oye…”
\item[Expresiva:] cuando el emisor se alegra, agradece, felicita.
\end{xdesc}
\end{document}
输出结果如下:
我仍然遇到问题,因为第一个项目跨越了边缘线,并且项目解释间隔太大,但这是一个开始。
答案4
如果我可以建议第三种解决方案,我不会忽视经典和众所周知的“unix 手册页”风格:
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{enumitem}
\newlist{chandradesc}{description}{3} % or whatever number of levels you want
\setlist[chandradesc]{style=nextline,labelsep=.66667em}
\setlist[chandradesc,1]{leftmargin=6pc} % modify the values as you prefer
\setlist[chandradesc,2]{leftmargin=4pc}
\setlist[chandradesc,3]{leftmargin=2pc}
\begin{document}
En un contexto determinado, las palabras poseen, además de su
significado literal, también una dimensión intencional. Un texto es la
manifestación lingüística de la intención del emisor dirigida a un
receptor. Si consideramos, pues, los actos ilocutivos implicados, un
texto cumplirá funciones diferentes.
La función textual es el efecto de los textos en una situación
comunicativa según los objetivos que queremos alcanzar. Un texto puede
desempeñar las siguientes funciones:
\begin{chandradesc}
\item[Representativa:] llamada también asertiva, cuando se afirma o se
\begin{chandradesc}
\item[Prescriptiva:] cuando se establecen normas. anuncia algo que se
considera verdadero.
\item[Prescr.:] cuando se establecen normas. anuncia algo que se
considera verdadero.
\end{chandradesc}
\item[Informativa:] cuando se presenta algo de manera neutra, sin
énfasis que pueda denotar emotividad, como por ejemplo un titular
de una noticia.
\item[Informativa-2:] cuando se presenta algo de manera neutra, sin
énfasis que pueda denotar emotividad, como por ejemplo un titular
de una noticia.
\item[Prescriptiva:] cuando se establecen normas. En la legislación, por
ejemplo, se emplean formas modales deónticas (deber + infinitivo)
\item[Persuasiva:] cuando se trata de convencer al interlocutor
\item[Comisiva:] cuando se promete, jura, ofrece, etc.
\item[Fática:] cuando el emisor se centra en el interlocutor y procura
mantener el contacto con él, como por ejemplo “Oye…”
\item[Expresiva:] cuando el emisor se alegra, agradece, felicita.
\end{chandradesc}
\end{document}
输出: