
Eu gostaria de ter "algo" (um pacote, um truque, uma macro, ...?) que me permitisse brincar bem com as margens (ou o layout) para definir o número médio ou típico de caracteres por linha.
Idealmente, esse "sistema" me ajudaria a manter essa proporção (66, 2,5 alfabetos ou qualquer outro número que eu escolher/inserir) independente de alterações nas famílias de fontes (como com o uso do pacote pslatex
ou txfonts
por exemplo), nos tamanhos das fontes (com uma opção de classe 10pt
ou, 12pt
por exemplo).
Olhei um pouco em volta e meio que entendi que usar classes KOMA-Script ou a memoir
classe pode ser parte de uma solução, mas eu preferiria não (especialmente porque nunca usei nenhuma até agora).
Um ponto importante para mim é que todas as proporções ou princípios do layout original devem ser mantidos. Por exemplo, se houvesse uma proporção definida entre as margens esquerda e direita, apenas brincar com uma margem ou com largura de texto/largura de linha não me satisfaria.
Por que eu gostaria de fazer isso? Porque eu gosto de usar o pslatex
pacote, mas isso coloca o número médio de caracteres por linha de cerca de 65 sem para cerca de 75+ com.
Observe que eu já passei ou folheei:
Melhores proporções de número de letras por linha e número de linhas por página
http://www.tex.ac.uk/ctan/macros/latex/contrib/memoir/memman.pdf
E, também pode haver respostas lá, não consegui encontrá-las (com muita facilidade).
Responder1
A afirmação de que cerca de 2,5 vezes o comprimento do alfabeto minúsculo é apenas uma indicação. No entanto, você pode brincar com geometry
:
\documentclass{book}
%%\usepackage{newtxtext}
\newlength{\alphabet}
\settowidth{\alphabet}{\normalfont abcdefghijklmnopqrstuvwxyz}
\usepackage{geometry}
\geometry{textwidth=2.5\alphabet,hmarginratio={2:3}}
\begin{document}
\the\textwidth
\end{document}
Isso usará uma proporção para as margens conforme indicado (2:3 é na verdade o padrão, no modo dois lados). Pacotes de fontes bem comportados devem funcionar corretamente.
Com as fontes padrão, obtenho uma largura de texto de 318,96 pt, enquanto newtxtext
obtenho 298,58 pt ( mathptmx
o resultado é 298,57 pt).
Observe que pslatex
é um pacote muito obsoleto e que seu descendente mathptmx
é bastante inadequado para uma composição tipográfica séria envolvendo matemática. Se você não precisa de matemática, outras opções baseadas em (Linotipo) Times Roman são
newtxtext
(com base emtxfonts
, mas com métricas corrigidas)tgtermes
O primeiro possui o pacote matemático complementar newtxmath
.
Você pode escolher a proporção que preferir para as margens. É habitual, na impressão frente e verso, ter a margem externa mais larga que a interna. Se quiser automatizar a escolha entre impressão unilateral (margens iguais) e impressão frente e verso, então
\geometry{textwidth=2.5\alphabet}
\makeatletter
\if@twoside
\geometry{hmarginratio={2:3}}
\else
\geometry{hmarginratio={1:1}}
\fi
\makeatother
poderia ser usado. As opções para geometry
podem ser fornecidas em \geometry
comandos distintos. Não se esqueça de especificar o tamanho do papel (você pode fazê-lo em \geometry
classe ou como opção).
Você também pode testar a classe carregada:
\makeatletter
\geometry{hmarginratio={1:1}} % fallback
\@ifclassloaded{book}
{
\if@twoside
\geometry{hmarginratio={2:3}}
\else
\geometry{hmarginratio={1:1}}
\fi
}{}
\@ifclassloaded{article}
{
\if@twoside
\geometry{hmarginratio={4:2}}
\else
\geometry{hmarginratio={1:1}}
\fi
}{}
\makeatletter
(a configuração 4:2 é apenas a título de exemplo).
No entanto, não existe um formato "pega-tudo": o que você finalmente escolhe para um documento depende do próprio documento.
Como definir a proporção da margem horizontal para ser igual à fixada pela classe? Isso é um pouco difícil, porque a configuração padrão usa um modelo diferente do geometry
.
\documentclass{article}
\usepackage{newtxtext}
\usepackage{geometry}
\newlength{\alphabet}
\sbox0{\normalfont abcdefghijklmnopqrstuvwxyz}
\setlength{\alphabet}{\wd0}
\makeatletter
\begingroup
\dimendef\innermargin=\z@
\dimendef\outermargin=\tw@
\innermargin=\dimexpr\oddsidemargin+1in+\hoffset\relax
\outermargin=\dimexpr\paperwidth-\innermargin-\textwidth\relax
\outermargin=.002\outermargin
\innermargin=2\innermargin
\count@=\innermargin
\divide\count@ \outermargin
\xdef\standardhmarginratio{\number\count@:1000}
\endgroup
\geometry{textwidth=2.5\alphabet,hmarginratio=\standardhmarginratio}
\begin{document}
text width = \the\textwidth
horizontal margin ratio = \standardhmarginratio
\end{document}
Com a article
classe obtemos 1000:1000, com book
(modo dois lados) o resultado é 667:1000 ou seja, para todos os efeitos práticos, 2:3.
Responder2
Robert Bringhurst, em"Os elementos do estilo tipográfico", fornece uma tabela de comprimentos de linha preferidos para diferentes fontes. Um ajuste de otimização de mínimos quadrados dos dados da tabela revelou que ele pode ser aproximado muito bem com a seguinte macro:
\newcommand*\GetTextWidth[3][\normalfont]{{#1%
\settowidth{#2}{abcdefghijklmnopqrstuvwxyz}%
\setlength{#2}{0.03193#2}%
\addtolength{#2}{0.44961pt}%
\setlength{#2}{#3#2}%
\global#2=#2}}
Que pode ser usado junto com geometry
, etc. para definir a largura do texto
\newlength\bringhurstwdt
\GetTextWidth{\bringhurstwdt}{66}
\geometry{textwidth=\bringhurstwdt}
Presumo que isso seja válido para o inglês padrão, que possui palavras relativamente curtas. Numa língua como o Africâner (minha língua nativa) temos muitas palavras muito longas e os 66 caracteres por linha nem sempre parecem corretos. Para outros idiomas, a contagem de caracteres para uma boa tipografia pode ser diferente, mas não tenho ideia do que seria melhor.
Responder3
ConTeXt fornece uma macro chamada \averagecharwidth
que calcula a largura média de um caractere com base na frequência de caracteres específica do idioma. Não existe uma interface adequada para isso, então você carrega manualmente os arquivos necessários.
\input lang-frq.mkii %macros to calculate average length
\input lang-frd.mkii %language frequency tables
\setuplayout[width=66\averagecharwidth]
Verlang-frd.mkiipara tabelas de frequência de idioma, elang-frq.mkiipara macros calcularem a largura média. Da documentação:
Este módulo implementa um método para determinar a largura de um caractere médio em um idioma. Ele usa as dimensões das fontes atuais.
O Método ~ 1 ignora as larguras e assume que cada caractere tem uma largura de 0,5em, o que é verdadeiro para a maioria das fontes monoespaçadas. O Método ~ 2 toma x como ponto de partida e assume que sua altura corresponde à sua largura. O método ~ 3 é o melhor e determina a largura média com base na tabela de caracteres específica do idioma. O Método ~ 4 é uma mistura entre os dois primeiros métodos: larguras específicas de caracteres aplicadas a uma distribuição igual. O método~0 informa a contagem total, que normalmente é de aproximadamente 100.
A documentação também inclui a figura a seguir mostrando as tabelas de frequência para inglês, holandês e alemão.
Embora os arquivos tenham .mkii
extensão, o código é TeX de nível bastante baixo e também funciona com ConTeXt MkIV. Também deve funcionar com LaTeX com pequenas alterações.
Para uma verdadeira "média de 66 caracteres por linha", você pode primeiro pré-processar seu texto para gerar a tabela de frequência e, em seguida, usar essa tabela de frequência para calcular a largura média dos caracteres!
Observação: a \averagecharwidth
macro pega os tamanhos da fonte atual e escolhe a frequência dos caracteres do idioma atual. Portanto, deve ser usado após a especificação da fonte e do idioma do documento.