From d9094ea7569d0c7f50e6f127572d5c58537552aa Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 22 Oct 2012 23:24:30 +0000 Subject: apa6 2.0 (22oct12) git-svn-id: svn://tug.org/texlive/trunk@28045 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/apa6/apa6.pdf | Bin 584969 -> 586502 bytes .../doc/latex/apa6/pseudoTeX/TeX2WordForapa6.bas | 388 ++++++++++++++++ .../texmf-dist/doc/latex/apa6/pseudoTeX/apa6.ptex | 95 ++++ .../doc/latex/apa6/samples/bibliography.bib | 1 + .../doc/latex/apa6/samples/longsample.tex | 1 + .../doc/latex/apa6/samples/shortsample.tex | 1 + Master/texmf-dist/source/latex/apa6/apa6.dtx | 508 ++++++++++++++++++++- Master/texmf-dist/source/latex/apa6/apa6.ins | 3 + Master/texmf-dist/tex/latex/apa6/apa6.cls | 5 +- .../tex/latex/apa6/config/APAamerican.txt | 1 + .../tex/latex/apa6/config/APAbritish.txt | 1 + .../texmf-dist/tex/latex/apa6/config/APAczech.txt | 1 + .../texmf-dist/tex/latex/apa6/config/APAdutch.txt | 1 + .../tex/latex/apa6/config/APAendfloat.cfg | 1 + .../tex/latex/apa6/config/APAenglish.txt | 1 + .../texmf-dist/tex/latex/apa6/config/APAgerman.txt | 1 + .../texmf-dist/tex/latex/apa6/config/APAgreek.txt | 1 + .../tex/latex/apa6/config/APAngerman.txt | 1 + 18 files changed, 991 insertions(+), 20 deletions(-) create mode 100644 Master/texmf-dist/doc/latex/apa6/pseudoTeX/TeX2WordForapa6.bas diff --git a/Master/texmf-dist/doc/latex/apa6/apa6.pdf b/Master/texmf-dist/doc/latex/apa6/apa6.pdf index 1c12002b75b..01a463408a1 100644 Binary files a/Master/texmf-dist/doc/latex/apa6/apa6.pdf and b/Master/texmf-dist/doc/latex/apa6/apa6.pdf differ diff --git a/Master/texmf-dist/doc/latex/apa6/pseudoTeX/TeX2WordForapa6.bas b/Master/texmf-dist/doc/latex/apa6/pseudoTeX/TeX2WordForapa6.bas new file mode 100644 index 00000000000..ac5a9f74458 --- /dev/null +++ b/Master/texmf-dist/doc/latex/apa6/pseudoTeX/TeX2WordForapa6.bas @@ -0,0 +1,388 @@ +%% +%% This is file `./pseudoTeX/TeX2WordForapa6.bas', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% apa6.dtx (with options: `bas') +%% ---------------------------------------------------------------------- +%% +%% apa6 - A LaTeX class for formatting documents in compliance with the +%% American Psychological Association's Publication Manual, 6th edition +%% +%% Copyright (C) 2011, 2012 by Brian D. Beitzel +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% Users may freely modify these files without permission, as long as the +%% copyright line and this statement are maintained intact. +%% +%% This work is not endorsed by, affiliated with, or probably even known +%% by, the American Psychological Association. +%% +%% ---------------------------------------------------------------------- +%% +Attribute VB_Name = "TeX2WordForapa6" +Sub FormatTex2WordDocument() + + Dim strRunningHead, r, E + Dim myrange As Range + + strRunningHead = InputBox("Please type the running head:", "Running Head") + If strRunningHead = "" Then Exit Sub + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="References" & vbCrLf + Selection.MoveUp Unit:=wdLine, Count:=1 + Selection.ParagraphFormat.LeftIndent = InchesToPoints(0) + Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter + + Selection.HomeKey Unit:=wdStory + + Call FormatTex2WordPageHeader(strRunningHead) + Call FormatAndMoveTex2WordTables + Call FormatAndMoveTex2WordFigures + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="Appendix" & vbCrLf + Selection.MoveUp Unit:=wdLine, Count:=1 + Selection.ParagraphFormat.LeftIndent = InchesToPoints(0) + Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter + + ' touch up temporary citations + Selection.HomeKey Unit:=wdStory + + Selection.Find.ClearFormatting + Selection.Find.Replacement.ClearFormatting + With Selection.Find + .Text = "{\" + .Replacement.Text = "{" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@}" + .Replacement.Text = "}" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{e.g.,\" + .Replacement.Text = "{e.g.`, \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{i.e.,\" + .Replacement.Text = "{i.e.`, \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{cf.\" + .Replacement.Text = "{cf. \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@p. " + .Replacement.Text = "@" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@pp. " + .Replacement.Text = "@" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + ' for table footnotes + With Selection.Find + .Text = "[para,flushleft] " + .Replacement.Text = "" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + ' delete the instructions + Selection.HomeKey Unit:=wdStory + + Set myrange = Selection.Range + myrange.Start = Selection.Start + + Selection.HomeKey Unit:=wdStory + Selection.Find.ClearFormatting + With Selection.Find + .Execute findText:="Delete these instructions!", Forward:=True, Wrap:=wdFindStop + myrange.End = Selection.End + 1 + myrange.Select + myrange.Delete + End With + + Selection.HomeKey Unit:=wdStory + +End Sub + +Sub FormatTex2WordPageHeader(strRunningHead) + + Dim r, E + + ' set the first page to be a different header + ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = True + + With ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage) + .Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble + .Range.ParagraphFormat.FirstLineIndent = InchesToPoints(0) + .Range.ParagraphFormat.TabStops.ClearAll + .Range.ParagraphFormat.TabStops.Add Position:=InchesToPoints(6.5), _ + Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces + .Range.Text = "Running head: " & UCase(strRunningHead) & vbTab + With .Range.Font + .Name = "Times New Roman" + .Size = 12 + .Bold = False + .Italic = False + End With + + Set r = .Range + E = .Range.End + r.Start = E + .Range.Fields.Add r, wdFieldPage + + End With + + With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary) + .Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble + .Range.ParagraphFormat.FirstLineIndent = InchesToPoints(0) + .Range.Text = UCase(strRunningHead) + .PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberRight + With .Range.Font + .Name = "Times New Roman" + .Size = 12 + .Bold = False + .Italic = False + End With + End With + +End Sub + +Sub FormatAndMoveTex2WordTables() + + Dim i, rngParagraphs As Range + + If ActiveDocument.Tables.Count > 0 Then + + For i = 1 To ActiveDocument.Tables.Count + + Selection.HomeKey Unit:=wdStory + + Set rngParagraphs = ActiveDocument.Range( _ + Start:=ActiveDocument.Tables(1).Range.Start, _ + End:=ActiveDocument.Tables(1).Range.End) + rngParagraphs.Select + + With Selection.Tables(1) + .Borders(wdBorderLeft).LineStyle = wdLineStyleNone + .Borders(wdBorderRight).LineStyle = wdLineStyleNone + With .Borders(wdBorderTop) + .LineStyle = wdLineStyleSingle + .LineWidth = wdLineWidth050pt + .Color = wdColorAutomatic + End With + With .Borders(wdBorderBottom) + .LineStyle = wdLineStyleSingle + .LineWidth = wdLineWidth050pt + .Color = wdColorAutomatic + End With + .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone + .Borders(wdBorderVertical).LineStyle = wdLineStyleNone + .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone + .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone + .Borders.Shadow = False + '.Rows.Alignment = wdAlignRowLeft + .PreferredWidthType = wdPreferredWidthPercent + .PreferredWidth = 100 + .TopPadding = InchesToPoints(0.08) + .BottomPadding = InchesToPoints(0.08) + .LeftPadding = InchesToPoints(0.08) + .RightPadding = InchesToPoints(0.08) + .Spacing = 0 + .AllowPageBreaks = True + .AllowAutoFit = False + End With + + With Selection.ParagraphFormat + .LineSpacingRule = wdLineSpaceSingle + .LeftIndent = InchesToPoints(0) + .RightIndent = InchesToPoints(0) + .SpaceBefore = 0 + .SpaceBeforeAuto = False + .SpaceAfter = 0 + .SpaceAfterAuto = False + .WidowControl = False + .KeepWithNext = False + .KeepTogether = False + .PageBreakBefore = False + .NoLineNumber = False + .Hyphenation = True + .FirstLineIndent = InchesToPoints(0) + .CharacterUnitLeftIndent = 0 + .CharacterUnitRightIndent = 0 + .CharacterUnitFirstLineIndent = 0 + .LineUnitBefore = 0 + .LineUnitAfter = 0 + .MirrorIndents = False + .TextboxTightWrap = wdTightNone + End With + + rngParagraphs.Cut + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="Table " & i & vbCrLf + Selection.Paste + + Next + + End If + +End Sub + +Sub FormatAndMoveTex2WordFigures() + + Dim i, rngParagraphs As Range + + If ActiveDocument.InlineShapes.Count > 0 Then + + For i = 1 To ActiveDocument.InlineShapes.Count + + Selection.HomeKey Unit:=wdStory + + Set rngParagraphs = ActiveDocument.Range( _ + Start:=ActiveDocument.InlineShapes(1).Range.Start, _ + End:=ActiveDocument.InlineShapes(1).Range.End) + rngParagraphs.Select + rngParagraphs.Cut + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.Paste + Selection.TypeText Text:=vbCrLf & "Figure " & i & vbCrLf + + Next + + End If + +End Sub +%% +%% Copyright (C) 2011, 2012 by Brian D. Beitzel +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License (LPPL), either +%% version 1.3c of this license or (at your option) any later +%% version. The latest version of this license is in the file: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% Users may freely modify these files without permission, as long as the +%% copyright line and this statement are maintained intact. +%% +%% This work is not endorsed by, affiliated with, or probably even known +%% by, the American Psychological Association. +%% +%% This work is "maintained" (as per LPPL maintenance status) by +%% Brian D. Beitzel. +%% +%% This work consists of the file apa6.dtx +%% and the derived files apa6.ins, +%% apa6.cls, +%% apa6.pdf, +%% README, +%% APAamerican.txt, +%% APAbritish.txt, +%% APAdutch.txt, +%% APAenglish.txt, +%% APAgerman.txt, +%% APAngerman.txt, +%% APAgreek.txt, +%% APAczech.txt, +%% APAendfloat.cfg, +%% apa6.ptex, +%% TeX2WordForapa6.bas, +%% Figure1.pdf, +%% shortsample.tex, +%% longsample.tex, and +%% bibliography.bib. +%% +%% +%% End of file `./pseudoTeX/TeX2WordForapa6.bas'. diff --git a/Master/texmf-dist/doc/latex/apa6/pseudoTeX/apa6.ptex b/Master/texmf-dist/doc/latex/apa6/pseudoTeX/apa6.ptex index 1bd2f0fa0e1..f1220e9148d 100644 --- a/Master/texmf-dist/doc/latex/apa6/pseudoTeX/apa6.ptex +++ b/Master/texmf-dist/doc/latex/apa6/pseudoTeX/apa6.ptex @@ -161,6 +161,100 @@ \@secdef@nonum@paragraphlevel{5}{1}{0}{0}{\normalsize\rm\it}{subparagraph}{Subparagraph} \@addtoreset{subparagraph}{paragraph} +\newcommand\DeclareLanguageMapping[2]{} +\newcommand\addbibresource[1]{} +\newcommand\printbibliography{} + +\def\specialComma{,} +\def\specialSemicolon{;} + +\catcode`\^^G=12 +\newcommand*{\doachar}[1]{% +\if#1\specialComma\specialSemicolon\else#1\fi%% +} +\newcommand*{\makeCommaIntoSemicolon}[1]{% +\def\stuff{#1}\ifx\stuff\@empty\else\@llchars#1^^G\fi} +\def\@llchars#1#2^^G{% +\def\letter{#1}\def\others{#2}% +\ifx\letter\@empty\let\next\@gobble% +\else% +\doachar{#1}% +\ifx\others\@empty \let\next\@gobble% +\else \let\next\@llchars \fi% +\fi% +\next#2^^G} +\catcode`\^^G=15 + +\def\parencite{% + \@ifnextchar[% + {\@parencite}% + {\@parencite[]}% +} +\def\@parencite[#1]{% + \@ifnextchar[% + {\@@parencite[#1]}% + {\@@parencite[#1][]}% +} +\def\@@parencite[#1][#2]#3{% +\makeatletter% +{\{{{#1}\textbackslash}{\makeCommaIntoSemicolon{#3}}@{#2}\}}% +\makeatother% +} +\let\maskparencite=\parencite + +\let\Parencite=\parencite +\let\maskParencite=\parencite + +\let\citep=\parencite +\let\maskcitep=\parencite +\let\Citep=\parencite +\let\maskCitep=\parencite + +\let\cite=\parencite +\let\maskcite=\parencite + +\let\citeyear=\parencite +\let\maskciteyear=\parencite +\let\citeyearpar=\parencite +\let\maskciteyearpar=\parencite + +\def\textcite{% + \@ifnextchar[% + {\@textcite}% + {\@textcite[]}% +} +\def\@textcite[#1]{% + \@ifnextchar[% + {\@@textcite[#1]}% + {\@@textcite[#1][]}% +} +\def\@@textcite[#1][#2]#3{% +\makeatletter% +{\{{{#1}\textbackslash}\makeCommaIntoSemicolon{#3}@{#2}@author-year\}}% +\makeatother% +} +\let\masktextcite=\textcite +\let\Textcite=\textcite +\let\maskTextcite=\textcite + +\let\citet=\textcite +\let\maskcitet=\textcite +\let\Citet=\textcite +\let\maskCitet=\textcite + +\let\citeA=\textcite +\let\maskciteA=\textcite + +\let\citeauthor=\textcite +\let\maskciteauthor=\textcite +\let\Citeauthor=\textcite +\let\maskCiteauthor=\textcite + +\let\citeyearNP=\textcite +\let\maskciteyearNP=\textcite +\let\citeNP=\textcite +\let\maskciteNP=\textcite + \long\def\maketitle{\entity@paragraph@new\begingroup\entity@paragraph@just=1\relax% {\raggedright\entity@paragraph@first=0\entity@paragraph@linespacingmultiple=0\entity@paragraph@spacebetween=240% {\bf INSTRUCTIONS:}\par\entity@paragraph@first=0% @@ -267,6 +361,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/doc/latex/apa6/samples/bibliography.bib b/Master/texmf-dist/doc/latex/apa6/samples/bibliography.bib index d59cf0084e3..ebec4b5ffef 100644 --- a/Master/texmf-dist/doc/latex/apa6/samples/bibliography.bib +++ b/Master/texmf-dist/doc/latex/apa6/samples/bibliography.bib @@ -223,6 +223,7 @@ the design of multimedia instruction}, %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/doc/latex/apa6/samples/longsample.tex b/Master/texmf-dist/doc/latex/apa6/samples/longsample.tex index 3159c1696f8..45e081fe73d 100644 --- a/Master/texmf-dist/doc/latex/apa6/samples/longsample.tex +++ b/Master/texmf-dist/doc/latex/apa6/samples/longsample.tex @@ -218,6 +218,7 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22] %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/doc/latex/apa6/samples/shortsample.tex b/Master/texmf-dist/doc/latex/apa6/samples/shortsample.tex index 06cbf83e656..e7cd4257b3b 100644 --- a/Master/texmf-dist/doc/latex/apa6/samples/shortsample.tex +++ b/Master/texmf-dist/doc/latex/apa6/samples/shortsample.tex @@ -155,6 +155,7 @@ skill in interpreting the results for the masses. %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/source/latex/apa6/apa6.dtx b/Master/texmf-dist/source/latex/apa6/apa6.dtx index c6daf7fcd65..9f650f3562b 100644 --- a/Master/texmf-dist/source/latex/apa6/apa6.dtx +++ b/Master/texmf-dist/source/latex/apa6/apa6.dtx @@ -4,11 +4,11 @@ % % % CHANGE THESE VALUES WITH EACH NEW RELEASE: % % % -%\ProvidesClass{apa6}[2012/04/04 v1.3 APA formatting (6th edition)] +%\ProvidesClass{apa6}[2012/10/20 v2.0 APA formatting (6th edition)] % % %<*internal> % -\def\apaSixVersionDate{2012/04/04} -\def\apaSixVersionNumber{1.3} +\def\apaSixVersionDate{2012/10/20} +\def\apaSixVersionNumber{2.0} % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -118,6 +118,7 @@ and the derived files apa6.ins, APAczech.txt, APAendfloat.cfg, apa6.ptex, + TeX2WordForapa6.bas, Figure1.pdf, shortsample.tex, longsample.tex, and @@ -149,6 +150,7 @@ and the derived files apa6.ins, \usedir{tex/latex/apa6/pseudoTeX} \generate{ \file{./pseudoTeX/apa6.ptex}{\from{\jobname.dtx}{ptex}} + \file{./pseudoTeX/TeX2WordForapa6.bas}{\from{\jobname.dtx}{bas}} } % %\endbatchfile @@ -254,6 +256,10 @@ and the derived files apa6.ins, % % \changes{v1.3}{2012/04/04}{Added `a4paper' option} % +% \changes{v2.0}{2012/10/20}{EndNote integration via `apa6.ptex' file +% and `FormatTex2WordDocument' macro} +% \changes{v2.0}{2012/10/20}{Fixed `headwidth' for `doc' mode} +% % % \begin{abstract} % The \textit{Publication Manual} of the American Psychological @@ -563,10 +569,11 @@ and the derived files apa6.ins, % body of the text to refer to that appendix. (Of course, if there is % only one appendix, simply refer to it as |the Appendix|.) % -% \section{Known Restrictions} +% \section{Known Limitations} % \begin{itemize} % \item There is a limit of six affiliations for authors (but an % unlimited number of authors across those six affiliations). +% \item The |APAenumerate| environment does not nest properly. % \end{itemize} % % \section{Development of \textsf{apa6}} @@ -780,21 +787,54 @@ and the derived files apa6.ins, % will be displayed on the title page of the converted document. % Mostly this involves moving floats (tables and figures) to their % places toward the end of the manuscript, some table re-formatting, -% and editing of bibliographic information---although some of this is -% expected to improve with upcoming releases of TeX2Word. The major -% weakness at the moment is a lack of support for bibliographic -% packages. I will update the |apa6.ptex| file within the -% \textsf{apa6} class on CTAN as the capabilities of TeX2Word evolve. -% It's well worth experimenting with the 30-day trial, and perhaps -% even worth finding---or borrowing---a Windows machine if you don't -% have one readily available (the conversion process does not require -% a \TeX\ installation to be present). -% -% Another pretty good solution is the Nitro software -% (\url{http://www.nitropdf.com/}), which does a good job with -% maintaining bibliographic information but distorts some font -% formatting. Nitro converts from PDF to Word rather than using the -% raw .tex file. +% and editing of bibliographic information. If you wish to have this +% editing more automated, you can open Word's Visual Basic Editor and +% import the ``TeX2WordForapa6.bas'' file (from the ``pseudoTeX'' +% subfolder of the \textsf{apa6} installation) as a new module, delete +% the lines beginning with percent signs at the top and bottom of the +% module, then run its |FormatTex2WordDocument| macro. This will +% complete all of the above steps and configure the bibliographic +% information as temporary citations that EndNote can then interpret +% (see below for details). However, some minor editing is still +% necessary (e.g., table titles and footnotes are not moved). For +% more efficient use of this macro, create a new Word document, open +% the Visual Basic Editor (VBE) and import the ``TeX2WordForapa6.bas'' +% file as a new module (be sure to delete all lines beginning with two +% percent signs); close the VBE and save the document in your ``Word +% Startup'' folder. Then the |FormatTex2WordDocument| macro will be +% available from the Macros dialog in Word for all documents. +% +% The major weakness of TeX2Word at the moment is a near-total lack of +% support for bibliographic packages. Version 2.0 of \textsf{apa6} +% introduced mechanisms in the |apa6.ptex| file and the +% |FormatTex2WordDocument| macro to establish compatibility with +% EndNote for handling bibliographic citations and the reference list +% when using TeX2Word. The process works as follows: (a) in Word, +% open your |.tex| file and let TeX2Word do the conversion; (b) run +% the |FormatTex2WordDocument| macro as described above to convert +% citations to a format that EndNote recognizes as ``temporary +% citations''; (c) go to the EndNote toolbar within Word and run +% ``Update Citations and Bibliography''; for each temporary citation, +% EndNote will present a dialog containing the matched references from +% the EndNote library; for each matched reference, remove any +% ``@@author-year'' search text if it causes references not to be +% found (this is a limitation in EndNote) and click ``Insert''; (d) +% after all citations have been resolved and EndNote has generated the +% References list at the end of the document, move the References list +% to the proper position if needed (i.e., when there are appendices, +% tables, or figures). Unfortunately, this workaround does mean that +% duplicate databases will need to be maintained in both a |.bib| file +% and an EndNote library that contain common Bib\TeX\ keys for each +% reference. To work properly, one modification is necessary to the +% user preferences in EndNote: un-check the ``Omit Author and/or Year +% from formatted citation if removed from temporary citation'' option +% (in the ``Formatting'' section of EndNote preferences). +% +% It's well worth experimenting with the 30-day trial of TeX2Word, and +% perhaps even worth finding---or borrowing---a Windows machine if you +% don't have one readily available (the conversion process does not +% require a \TeX\ installation to be present). +% % % \section{Dependencies} % \textsf{apa6} automatically loads the following packages. If these @@ -2923,6 +2963,10 @@ and the derived files apa6.ins, \newcommand{\shorttitle}[1]{\def\@shorttitle{#1}} \def\leftheader#1{\def\r@headl{#1}} +% fix headwidth for even-numbered pages +% suggestion from http://tex.stackexchange.com/questions/42798/apa6-package-heading-line-exceeds-textwidth +\setlength{\headwidth}{\textwidth} + \RequirePackage{fancyhdr} \setlength{\headheight}{15.2pt} \fancyhf{} @@ -3788,6 +3832,103 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22] \@secdef@nonum@paragraphlevel{5}{1}{0}{0}{\normalsize\rm\it}{subparagraph}{Subparagraph} \@addtoreset{subparagraph}{paragraph} +\newcommand\DeclareLanguageMapping[2]{} +\newcommand\addbibresource[1]{} +\newcommand\printbibliography{} + +% convert citations to temporary citations for EndNote +\def\specialComma{,} +\def\specialSemicolon{;} + +\catcode`\^^G=12 +\newcommand*{\doachar}[1]{% + \if#1\specialComma\specialSemicolon\else#1\fi%% +} +\newcommand*{\makeCommaIntoSemicolon}[1]{% + \def\stuff{#1}\ifx\stuff\@empty\else\@llchars#1^^G\fi} +\def\@llchars#1#2^^G{% + \def\letter{#1}\def\others{#2}% + \ifx\letter\@empty\let\next\@gobble% + \else% + \doachar{#1}% + \ifx\others\@empty \let\next\@gobble% + \else \let\next\@llchars \fi% + \fi% +\next#2^^G} +\catcode`\^^G=15 + + +\def\parencite{% + \@ifnextchar[% + {\@parencite}% + {\@parencite[]}% +} +\def\@parencite[#1]{% + \@ifnextchar[% + {\@@parencite[#1]}% + {\@@parencite[#1][]}% +} +\def\@@parencite[#1][#2]#3{% + \makeatletter% + {\{{{#1}\textbackslash}{\makeCommaIntoSemicolon{#3}}@{#2}\}}% + \makeatother% +} +\let\maskparencite=\parencite + +\let\Parencite=\parencite +\let\maskParencite=\parencite + +\let\citep=\parencite +\let\maskcitep=\parencite +\let\Citep=\parencite +\let\maskCitep=\parencite + +\let\cite=\parencite +\let\maskcite=\parencite + +\let\citeyear=\parencite +\let\maskciteyear=\parencite +\let\citeyearpar=\parencite +\let\maskciteyearpar=\parencite + + +\def\textcite{% + \@ifnextchar[% + {\@textcite}% + {\@textcite[]}% +} +\def\@textcite[#1]{% + \@ifnextchar[% + {\@@textcite[#1]}% + {\@@textcite[#1][]}% +} +\def\@@textcite[#1][#2]#3{% + \makeatletter% + {\{{{#1}\textbackslash}\makeCommaIntoSemicolon{#3}@{#2}@author-year\}}% + \makeatother% +} +\let\masktextcite=\textcite +\let\Textcite=\textcite +\let\maskTextcite=\textcite + +\let\citet=\textcite +\let\maskcitet=\textcite +\let\Citet=\textcite +\let\maskCitet=\textcite + +\let\citeA=\textcite +\let\maskciteA=\textcite + +\let\citeauthor=\textcite +\let\maskciteauthor=\textcite +\let\Citeauthor=\textcite +\let\maskCiteauthor=\textcite + +\let\citeyearNP=\textcite +\let\maskciteyearNP=\textcite +\let\citeNP=\textcite +\let\maskciteNP=\textcite + % re-define the maketitle \long\def\maketitle{\entity@paragraph@new\begingroup\entity@paragraph@just=1\relax% @@ -3869,6 +4010,335 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22] %\end{macro} % % +% +% %%%%%%%%%%% TeX2WordForapa6.bas FILE (macro for Word) %%%%%%%%%%%% +% +%\begin{macro}{TeX2WordForapa6.bas} +% \begin{macrocode} +%<*bas> +Attribute VB_Name = "TeX2WordForapa6" +Sub FormatTex2WordDocument() + + Dim strRunningHead, r, E + Dim myrange As Range + + strRunningHead = InputBox("Please type the running head:", "Running Head") + If strRunningHead = "" Then Exit Sub + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="References" & vbCrLf + Selection.MoveUp Unit:=wdLine, Count:=1 + Selection.ParagraphFormat.LeftIndent = InchesToPoints(0) + Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter + + Selection.HomeKey Unit:=wdStory + + Call FormatTex2WordPageHeader(strRunningHead) + Call FormatAndMoveTex2WordTables + Call FormatAndMoveTex2WordFigures + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="Appendix" & vbCrLf + Selection.MoveUp Unit:=wdLine, Count:=1 + Selection.ParagraphFormat.LeftIndent = InchesToPoints(0) + Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter + + ' touch up temporary citations + Selection.HomeKey Unit:=wdStory + + Selection.Find.ClearFormatting + Selection.Find.Replacement.ClearFormatting + With Selection.Find + .Text = "{\" + .Replacement.Text = "{" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@}" + .Replacement.Text = "}" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{e.g.,\" + .Replacement.Text = "{e.g.`, \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{i.e.,\" + .Replacement.Text = "{i.e.`, \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "{cf.\" + .Replacement.Text = "{cf. \" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@p. " + .Replacement.Text = "@" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + With Selection.Find + .Text = "@pp. " + .Replacement.Text = "@" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + ' for table footnotes + With Selection.Find + .Text = "[para,flushleft] " + .Replacement.Text = "" + .Forward = True + .Wrap = wdFindContinue + .Format = False + .MatchCase = False + .MatchWholeWord = False + .MatchWildcards = False + .MatchSoundsLike = False + .MatchAllWordForms = False + End With + Selection.Find.Execute Replace:=wdReplaceAll + + ' delete the instructions + Selection.HomeKey Unit:=wdStory + + Set myrange = Selection.Range + myrange.Start = Selection.Start + + Selection.HomeKey Unit:=wdStory + Selection.Find.ClearFormatting + With Selection.Find + .Execute findText:="Delete these instructions!", Forward:=True, Wrap:=wdFindStop + myrange.End = Selection.End + 1 + myrange.Select + myrange.Delete + End With + + Selection.HomeKey Unit:=wdStory + +End Sub + +Sub FormatTex2WordPageHeader(strRunningHead) + + Dim r, E + + ' set the first page to be a different header + ActiveDocument.PageSetup.DifferentFirstPageHeaderFooter = True + + With ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage) + .Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble + .Range.ParagraphFormat.FirstLineIndent = InchesToPoints(0) + .Range.ParagraphFormat.TabStops.ClearAll + .Range.ParagraphFormat.TabStops.Add Position:=InchesToPoints(6.5), _ + Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces + .Range.Text = "Running head: " & UCase(strRunningHead) & vbTab + With .Range.Font + .Name = "Times New Roman" + .Size = 12 + .Bold = False + .Italic = False + End With + + Set r = .Range + E = .Range.End + r.Start = E + .Range.Fields.Add r, wdFieldPage + + End With + + With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary) + .Range.ParagraphFormat.LineSpacingRule = wdLineSpaceDouble + .Range.ParagraphFormat.FirstLineIndent = InchesToPoints(0) + .Range.Text = UCase(strRunningHead) + .PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberRight + With .Range.Font + .Name = "Times New Roman" + .Size = 12 + .Bold = False + .Italic = False + End With + End With + +End Sub + +Sub FormatAndMoveTex2WordTables() + + Dim i, rngParagraphs As Range + + If ActiveDocument.Tables.Count > 0 Then + + For i = 1 To ActiveDocument.Tables.Count + + Selection.HomeKey Unit:=wdStory + + Set rngParagraphs = ActiveDocument.Range( _ + Start:=ActiveDocument.Tables(1).Range.Start, _ + End:=ActiveDocument.Tables(1).Range.End) + rngParagraphs.Select + + With Selection.Tables(1) + .Borders(wdBorderLeft).LineStyle = wdLineStyleNone + .Borders(wdBorderRight).LineStyle = wdLineStyleNone + With .Borders(wdBorderTop) + .LineStyle = wdLineStyleSingle + .LineWidth = wdLineWidth050pt + .Color = wdColorAutomatic + End With + With .Borders(wdBorderBottom) + .LineStyle = wdLineStyleSingle + .LineWidth = wdLineWidth050pt + .Color = wdColorAutomatic + End With + .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone + .Borders(wdBorderVertical).LineStyle = wdLineStyleNone + .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone + .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone + .Borders.Shadow = False + '.Rows.Alignment = wdAlignRowLeft + .PreferredWidthType = wdPreferredWidthPercent + .PreferredWidth = 100 + .TopPadding = InchesToPoints(0.08) + .BottomPadding = InchesToPoints(0.08) + .LeftPadding = InchesToPoints(0.08) + .RightPadding = InchesToPoints(0.08) + .Spacing = 0 + .AllowPageBreaks = True + .AllowAutoFit = False + End With + + With Selection.ParagraphFormat + .LineSpacingRule = wdLineSpaceSingle + .LeftIndent = InchesToPoints(0) + .RightIndent = InchesToPoints(0) + .SpaceBefore = 0 + .SpaceBeforeAuto = False + .SpaceAfter = 0 + .SpaceAfterAuto = False + .WidowControl = False + .KeepWithNext = False + .KeepTogether = False + .PageBreakBefore = False + .NoLineNumber = False + .Hyphenation = True + .FirstLineIndent = InchesToPoints(0) + .CharacterUnitLeftIndent = 0 + .CharacterUnitRightIndent = 0 + .CharacterUnitFirstLineIndent = 0 + .LineUnitBefore = 0 + .LineUnitAfter = 0 + .MirrorIndents = False + .TextboxTightWrap = wdTightNone + End With + + rngParagraphs.Cut + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.TypeText Text:="Table " & i & vbCrLf + Selection.Paste + + Next + + End If + +End Sub + +Sub FormatAndMoveTex2WordFigures() + + Dim i, rngParagraphs As Range + + If ActiveDocument.InlineShapes.Count > 0 Then + + For i = 1 To ActiveDocument.InlineShapes.Count + + Selection.HomeKey Unit:=wdStory + + Set rngParagraphs = ActiveDocument.Range( _ + Start:=ActiveDocument.InlineShapes(1).Range.Start, _ + End:=ActiveDocument.InlineShapes(1).Range.End) + rngParagraphs.Select + rngParagraphs.Cut + + Selection.EndKey Unit:=wdStory + Selection.InsertBreak Type:=wdPageBreak + Selection.Paste + Selection.TypeText Text:=vbCrLf & "Figure " & i & vbCrLf + + Next + + End If + +End Sub +% +% +% \end{macrocode} +%\end{macro} +% +% % %%%%%%%%%%% CONFIGURATION FILES %%%%%%%%%%%% % %\begin{macro}{APAamerican.txt} diff --git a/Master/texmf-dist/source/latex/apa6/apa6.ins b/Master/texmf-dist/source/latex/apa6/apa6.ins index 9c8164b1dd0..c7ad0616ece 100644 --- a/Master/texmf-dist/source/latex/apa6/apa6.ins +++ b/Master/texmf-dist/source/latex/apa6/apa6.ins @@ -89,6 +89,7 @@ and the derived files apa6.ins, APAczech.txt, APAendfloat.cfg, apa6.ptex, + TeX2WordForapa6.bas, Figure1.pdf, shortsample.tex, longsample.tex, and @@ -120,6 +121,7 @@ and the derived files apa6.ins, \usedir{tex/latex/apa6/pseudoTeX} \generate{ \file{./pseudoTeX/apa6.ptex}{\from{\jobname.dtx}{ptex}} + \file{./pseudoTeX/TeX2WordForapa6.bas}{\from{\jobname.dtx}{bas}} } \endbatchfile %% @@ -157,6 +159,7 @@ and the derived files apa6.ins, %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/apa6.cls b/Master/texmf-dist/tex/latex/apa6/apa6.cls index cceb84ebbb2..8ddf25a4092 100644 --- a/Master/texmf-dist/tex/latex/apa6/apa6.cls +++ b/Master/texmf-dist/tex/latex/apa6/apa6.cls @@ -27,7 +27,7 @@ %% %% ---------------------------------------------------------------------- %% -\ProvidesClass{apa6}[2012/04/04 v1.3 APA formatting (6th edition)] +\ProvidesClass{apa6}[2012/10/20 v2.0 APA formatting (6th edition)] \NeedsTeXFormat{LaTeX2e} \DeclareOption{man}{% @@ -1521,6 +1521,8 @@ \newcommand{\shorttitle}[1]{\def\@shorttitle{#1}} \def\leftheader#1{\def\r@headl{#1}} +\setlength{\headwidth}{\textwidth} + \RequirePackage{fancyhdr} \setlength{\headheight}{15.2pt} \fancyhf{} @@ -1770,6 +1772,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAamerican.txt b/Master/texmf-dist/tex/latex/apa6/config/APAamerican.txt index 16e26be83fe..442480724ea 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAamerican.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAamerican.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAbritish.txt b/Master/texmf-dist/tex/latex/apa6/config/APAbritish.txt index 301d6aacc54..08570e6396b 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAbritish.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAbritish.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAczech.txt b/Master/texmf-dist/tex/latex/apa6/config/APAczech.txt index d6f6e4d6b46..c4a28bf7c81 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAczech.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAczech.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAdutch.txt b/Master/texmf-dist/tex/latex/apa6/config/APAdutch.txt index 32292a3a764..832645ec073 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAdutch.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAdutch.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAendfloat.cfg b/Master/texmf-dist/tex/latex/apa6/config/APAendfloat.cfg index 26d68dbaa3b..8f9a875934b 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAendfloat.cfg +++ b/Master/texmf-dist/tex/latex/apa6/config/APAendfloat.cfg @@ -132,6 +132,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAenglish.txt b/Master/texmf-dist/tex/latex/apa6/config/APAenglish.txt index 10aceb588e3..c1f9ce46124 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAenglish.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAenglish.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAgerman.txt b/Master/texmf-dist/tex/latex/apa6/config/APAgerman.txt index 5d55cc6107e..a4b28de4527 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAgerman.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAgerman.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAgreek.txt b/Master/texmf-dist/tex/latex/apa6/config/APAgreek.txt index 177c8a8039d..ab8abead045 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAgreek.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAgreek.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and diff --git a/Master/texmf-dist/tex/latex/apa6/config/APAngerman.txt b/Master/texmf-dist/tex/latex/apa6/config/APAngerman.txt index f09f8d630bc..4349d02b3b9 100644 --- a/Master/texmf-dist/tex/latex/apa6/config/APAngerman.txt +++ b/Master/texmf-dist/tex/latex/apa6/config/APAngerman.txt @@ -68,6 +68,7 @@ %% APAczech.txt, %% APAendfloat.cfg, %% apa6.ptex, +%% TeX2WordForapa6.bas, %% Figure1.pdf, %% shortsample.tex, %% longsample.tex, and -- cgit v1.2.3