AVISO: Esta é uma pergunta de acompanhamento paraExibir entradas em formato longo (semelhante ao primeiro uso) de entradas sem acrônimos.
Comomapasugerido em outro post, fui em frente e defini meus próprios estilos de glossário (junto com alguns especificadores de coluna) para resolver o problema da unidade (usando o user1
campo). Agora minha definição fica assim (estilo tabx3col
usado no primeiro glossário e tabx4col
usado no segundo):
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newglossarystyle{tabx3col}{%
% put the glossary in a longtable environment:
\renewenvironment{theglossary}%
{\begin{longtable}{L{0.2\textwidth}L{0.6\textwidth}R{0.2\textwidth}}}%
{\end{longtable}}%
% Set the table's header:
\renewcommand*{\glossaryheader}{}%
% No heading between groups:
\renewcommand*{\glsgroupheading}[1]{}%
% Main (level 0) entries displayed in a row:
\renewcommand*{\glossaryentryfield}[5]{%
\glstarget{##1}{\textbf{##2}}% Name
& ##3% Description
& ##5% Page list
\\% end of row
}%
% Sub entries treated the same as level 0 entries:
%\renewcommand*{\glossarysubentryfield}[6]{%
%\glossaryentryfield{##2}{##3}{##5}{##6}}%
%% Nothing between groups:
%\renewcommand*{\glsgroupskip}{}%
}
\newglossarystyle{tabx4col}{%
% put the glossary in a longtable environment:
\renewenvironment{theglossary}%
{\begin{longtable}{L{0.1\textwidth}L{0.1\textwidth}p{0.55\textwidth}R{0.2\textwidth}}}%
{\end{longtable}}%
% Set the table's header:
\renewcommand*{\glossaryheader}{}%
% No heading between groups:
\renewcommand*{\glsgroupheading}[1]{}%
% Main (level 0) entries displayed in a row:
\renewcommand*{\glossaryentryfield}[5]{%
\glstarget{\textbf{##1}}{\textbf{##2}}% Name
& $[$\glsentryuseri{##1}$]$% Units
& ##3% Description
& ##5% Page list
\\% end of row
}%
% Sub entries treated the same as level 0 entries:
%\renewcommand*{\glossarysubentryfield}[6]{%
%\glossaryentryfield{##2}{##3}{##5}{##6}}%
%% Nothing between groups:
%\renewcommand*{\glsgroupskip}{}%
}
Isso me dá uma saída conforme mostrado na imagem abaixo:
Eu edito a captura de tela com algumas linhas cinzas para o texto que gostaria de alinhar (usando o R
especificador de coluna para colunas irregulares de largura fixa usadas na lista de páginas). Principalmente eu gostaria de ter o glossário completo \textwidth
. Pensei que, ao tornar cada coluna dependente da \textwidth
variável e adicionar os valores até 1, obteria uma tabela que, em última análise, seria tão larga quanto a linha do cabeçalho. Também tentei usar tabularx como ambiente de tabela, que falhou (mesmo usando comandos de macro, por exemplo, \tabularx \endtabularx
). Eu compilei um MWE (http://pastebin.com/McqsTPga, talvez não seja mais tão mínimo), onde você pode ver o problema por si mesmo.
Sinto muito pela postagem um tanto longa, mas isso está realmente me incomodando.
Responder1
"Pensei que, ao tornar cada coluna dependente da \textwidth
variável e adicionar os valores até 1, obteria uma tabela que seria tão larga quanto a linha do cabeçalho." Isso é quase verdade, mas você esqueceu o espaço entre colunas que é adicionado automaticamente. Você pode suprimir isso @{}
na especificação da coluna. Quando eu especifico suas tabelas com
\newglossarystyle{tabx3col}{%
\renewenvironment{theglossary}%
{\begin{longtable}{@{}p{0.2\textwidth}@{}p{0.6\textwidth}@{}>{\raggedleft}p{0.2\textwidth}@{}}}%
...
e
\newglossarystyle{tabx4col}{%
\renewenvironment{theglossary}%
{\begin{longtable}{@{}p{0.12\textwidth}@{}p{0.08\textwidth}@{}p{0.6\textwidth}@{}>{\raggedleft}p{0.2\textwidth}@{}}}%
...
o alinhamento sai conforme desejado. Pode ser uma ideia melhor não suprimir o espaço entre colunas antes e depois da descrição. Então você deve estreitar a coluna de descrição (ou qualquer outra coluna) em 24 pontos.
Responder2
Com \usepackage{calc}
você pode especificar seu longtable
alinhamento como
\begin{longtable}{
@{} % suppress the space at the left
L{0.1\textwidth-\tabcolsep}
L{0.1\textwidth-2\tabcolsep}
p{0.6\textwidth-2\tabcolsep}
R{0.2\textwidth-\tabcolsep}
@{} % suppress the space at the right
}
Você pode querer remover os espaços entre colunas na coluna mais larga; nesse caso
\begin{longtable}{
@{} % suppress the space at the left
L{0.1\textwidth}
L{0.1\textwidth}
p{0.6\textwidth-6\tabcolsep}
R{0.2\textwidth}
@{} % suppress the space at the right
}
Cada coluna é precedida e seguida por um \tabcolsep
amplo espaço; você tem quatro colunas, então, depois de suprimir os espaços mais à esquerda e à direita, seis delas permanecem.